Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何自定义django DateRangeFilter_Django_Filter_Date Range - Fatal编程技术网

如何自定义django DateRangeFilter

如何自定义django DateRangeFilter,django,filter,date-range,Django,Filter,Date Range,我想更改django过滤器的DateRangeFilter的日期选项。我尝试了一个覆盖原始init的自定义类,但是我得到了错误“TypeError at/member\u contact\u filtered/:lambda()正好接受1个参数(给定2个)”并且不明白问题出在哪里。这就是我所拥有的: class CustomDateRangeFilter(django_filters.DateRangeFilter): def __init__(self, *args, **kwargs):

我想更改django过滤器的DateRangeFilter的日期选项。我尝试了一个覆盖原始init的自定义类,但是我得到了错误“TypeError at/member\u contact\u filtered/:lambda()正好接受1个参数(给定2个)”并且不明白问题出在哪里。这就是我所拥有的:

class CustomDateRangeFilter(django_filters.DateRangeFilter):

def __init__(self, *args, **kwargs): 
    try: 
        options = kwargs.pop('options') 
        self.options = options 
    except KeyError: 
        pass
    kwargs['choices'] = [(key, value[0]) for key, value in self.options.iteritems()] 
    super(CustomDateRangeFilter, self).__init__(*args, **kwargs)

class MemberContactFilter(FilterSet):

from django.utils.translation import ugettext_lazy as _

options = {
'': (_('Any Date'), lambda name: Q()),
1: (_('Today'), lambda name: Q(**{
    '%s__year' % name: datetime.today().year,
    '%s__month' % name: datetime.today().month,
    '%s__day' % name: datetime.today().day
})),
2: (_('Past 7 days'), lambda name: Q(**{
    '%s__gte' % name: (datetime.today() - timedelta(days=7)).strftime('%Y-%m-%d'),
    '%s__lt' % name: (datetime.today()+timedelta(days=1)).strftime('%Y-%m-%d'),
})),
}

next_contact_date = CustomDateRangeFilter(label='Follow up', options=options)

class Meta:
    model = MemberContact
    fields = ['next_contact_date']

我使用的filters.py与我在github上看到的filters.py不同。哦,好吧