Как правильно отфильтровать диапазон дат в Django фильтре - PullRequest
0 голосов
/ 16 января 2020

Я относительно новичок в Django и столкнулся с проблемой, пытаясь отфильтровать дату. Я могу отфильтровать все другие значения, кроме даты. Это всего лишь одна дата, но я пытаюсь отфильтровать все регистры в заданном диапазоне, поэтому я добавил два фильтра, например:

class GamesFilter(FilterUserMixin):
    [...]
    date1 = django_filters.DateFilter(field_name='date1', method='filter_date', label='Start date')
    date2 = django_filters.DateFilter(field_name='date2', method='filter_date', label='End date')

    def filter_date(self,queryset,name,value):
        if name == "date1":
            queryset = queryset.filter(date__gte=value)
        elif name == "date2":
            queryset = queryset.filter(date__lte=value)
        return queryset

    class Meta:
        model = Game
        fields = ('team1','result','status','tourney','date1','date2')

В своем formhelpers.py я добавил:

class GamesFormHelper(FormHelper):
    [...]
    layout = Layout(
        'team1','result','status','tourney','date1','date2',
        Submit('filter','Filter',css_class='btn-default')
    )

Модель "Game" имеет только параметр "date", а не "date1" и "date2", но я не смог найти способ отображения двух фильтров на веб-странице без добавления "date1" и "date2" в классе Meta of GamesFilter и в FormHelper.

Я полагаю, что должен быть гораздо лучший и функциональный способ добиться этого, но я не смог найти ничего, что работает. Я попытался использовать DateFromToRangeFilter вместо DateFilter, но тогда он не отображает средство выбора даты, добавленное мной на html (и появляется только одно текстовое поле, которое не позволяет искать в диапазоне).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...