Как отфильтровать поле целочисленного времени как выбор даты в django_filter - PullRequest
0 голосов
/ 25 июня 2019

У меня есть рабочий django-фильтр для фильтрации позже даты, который хранится на уровне базы данных как целочисленная отметка времени. В других местах я всегда представляю эту метку времени как дату в шаблоне, но в django_filter она показывает значение поля, которое, конечно, является целым числом метки времени.

Например, если мой фильтр:

dispatch__gt = django_filters.NumberFilter(field_name='dispatch_time', lookup_expr='gt', label='Dispatched after')

ожидается ввод метки времени, который работает нормально, но выглядит ужасно.

Я хотел бы, чтобы он отображал фильтр выбора на основе списка вариантов: не ранее года, не ранее месяца, не ранее недели и т. Д.

Я пробовал:

dispatch__gt = django_filters.ChoiceFilter(field_name='dispatch_time', lookup_expr='gt', label="Dispatched after",
                                            choices=Date_Choices)

с Date_Choices, генерируемым с шаблоном template_tag в форме. Это создает форму правильно и передает правильные значения из формы в фильтр, но он никогда не фильтрует.

Может ли это сравнение быть выполнено с django_filters.ChoiceFilter или он будет только совпадать?

чтобы было ясно, я имею в виду этот пакет:

https://django -filter.readthedocs.io / о / ведущий / index.html * 1 021 *

Спасибо.

Редактировать

У меня есть обходной путь, который заключается в использовании тега шаблона для создания формы выбора, подобной той, которая будет создана django_filters.ChoiceFilter, которая передает результат в django_filters.NumberFilter вместо django_filters.ChoiceFilter. Тогда lookup_expr = 'gt' работает.

По сути, похоже, что lookup_expr = 'gt' не работает с django_filters.ChoiceFilter.

Я бы очень хотел получить лучший ответ, если у кого-то есть такой, но этот обходной путь пока работает.

...