如何在Django过滤器中正确过滤日期范围

时间:2020-01-16 17:07:13

标签: python django

我对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”在GamesFilter类的Meta和FormHelper中。

我想必须有一个更好的功能性方法来实现这一目标,但是我还没有找到任何可行的方法。我尝试使用DateFromToRangeFilter而不是DateFilter,但是它没有呈现我在html上添加的datepicker(并且仅出现一个文本框,这不允许我在范围内搜索)。

0 个答案:

没有答案