I have a model similar to this: # segment/models.py from django.db import models from django.contrib.postgres.fields import JSONField class Segment(models.Model): name = models.CharField(max_length=100) # docs: https://docs.djangoproject.com/en/2.2/ref/contrib/postgres/fields/#jsonfield data = JSONField('data', 'data') in field data I store JSON data similar to this { "length": 123.45 "difficulty": { "avg": "easy" "max": "advanced" } } I would like to be able to query data as following: api/segments/?data__difficulty__avg=easy to filter all records where data.difficulty.avg="easy". to do this, I set up the serializer: # api/serializers.py from rest_framework import serializers class SegmentSerializer(serializers.ModelSerializer): class Meta: model = Segment fields = ['id', 'name', 'data'] and the view looks like this: # api/views.py from django_filters.rest_framework import DjangoFilterBackend from .serializers import SegmentSerializer from segment.models import Segment class SegmentViewSet(viewsets.ReadOnlyModelViewSet): queryset = Segment.objects.all() serializer_class = SegmentSerializer filter_backends = [DjangoFilterBackend] filterset_fields = ['id', 'name', 'data'] when I call api/segments I get the following error AssertionError at /api/segments/ AutoFilterSet resolved field 'data' with 'exact' lookup to an unrecognized field type JSONField. Try adding an override to 'Meta.filter_overrides'. See: https://django-filter.readthedocs.io/en/master/ref/filterset.html#customise-filter-generation-with-filter-overrides Request Method: GET Request URL: http://localhost:8000/api/segments/ Django Version: 2.2.7 Python Executable: /Users/udos/.virtualenvs/ts/bin/python Python Version: 3.6.4 . . . I tried adding data = serializers.JSONField() to the serializer: # api/serializers.py from rest_framework import serializers class SegmentSerializer(serializers.ModelSerializer): data = serializers.JSONField() class Meta: model = Segment fields = ['id', 'name', 'data'] but the error persists. so I'm not applying it correctly :| how is this done properly? Continue reading...