Джанго-фильтр для обнуляемого логического поля - PullRequest
0 голосов
/ 24 ноября 2018

Я хотел бы использовать django-filter для BooleanField(blank=True, null=True).Когда я использую его из коробки, форма генерирует три варианта: Неизвестно (без фильтрации), Да (True) и Нет (False).Однако мне нужен четвертый вариант для None, чтобы фильтр специально выбирал эти записи со значением None.

Моя модель (соответствующая часть) :

class Record(Model):
    accepted = BooleanField(blank=True, null=True, verbose_name=_("Accepted?"))

Мой фильтр (соответствующая часть) :

class RecordFilter(FilterSet):
    class Meta:
        model = Record
        fields = OrderedDict((
            ("accepted", ["exact"]),
        ))

Мой взгляд :

class RecordList(LoginRequiredMixin, FilterView):
    model = Record
    paginate_by = 25
    template_name = "record/record_list.html"
    filterset_class = RecordFilter

Мой шаблон (соответствующийчасть) :

<form method="get" role="form" class="form">
      {{ filter.form.as_p }}
      <button>{% trans "Filter" %}</button>
</form>

Как мне добиться желаемого поведения?

1 Ответ

0 голосов
/ 09 декабря 2018

Эту проблему можно решить, построив ChoiceFilter с правильными аргументами, как показал пользователь здесь .

Тем не менее, фреймворк должен полностью поддерживать NullBooleanField s, иЯ открыл проблему , чтобы решить эту проблему.

...