Django и DRF-DataTables - исправление поведения фильтрации

Я использую DRF-DataTables для создания просматриваемой таблицы на стороне клиента.

Модель, с которой я работаю, содержит несколько нулевых булевых полей, таких как:

models.py

class Record(...):
    name = models.CharField(..., blank=True, null=True)
    is_active = models.BooleanField(blank=True, null=True)

Таблица отображается с serverside=true, однако при попытке фильтрации по столбцу is_active наблюдается нежелательное поведение:

  1. filtering with "True" or "true" correctly retrieves only the records where is_active=True
  2. filtering with "False" (or any iteration where the 'F' is capitalized) correctly retrieves the records where is_active=False
  3. filtering with "false" incorrectly retrieves all records (but "fals" pulls the records where is_active=False)

Более того - похоже, что нет возможности отфильтровать записи, где is_active=None или name=None

Идеальным решением было бы переопределить логику фильтрации, написав свою собственную FilterSet, однако при попытке следовать документации я столкнулся с этой ошибкой:

views.py

class RecordGlobalFilter(...):

    name = GlobalCharFilter(lookup_expr='icontains')

    class Meta:
        model = Record
        fields = '__all__'


class RecordViewSet(...):
    
    ...
    
    filter_backends = [DatatablesFilterBackend]
    filterset_class = RecordFilter

Ошибка:

AttributeError: type object 'RecordFilter' has no attribute '_meta'
Вернуться на верх