gpt4 book ai didi

python - 如何使用 django_filters.DateFilter?

转载 作者:行者123 更新时间:2023-12-01 05:24:03 27 4
gpt4 key购买 nike

我尝试使用 django_filter 的 DateFilter 按精确日期进行过滤,但无法让它返回任何结果。

myapp/models.py

from django.db import models

class Event(models.Model):
start = models.DateField()
title = models.CharField(_'title'), max_length=256)

myapp/filters.py

from myapp.models import Event
import django_filters

class EventFilter(django_filters.FilterSet):
start = django_filters.DateFilter(
'start', label=_('With start date'),
widget=forms.DateInput() # I'm using a datepicker-like widget to enter date
)

class Meta:
model = Event
fields = ('start',)

例如:我有一个开始日期为 2012 年 1 月 14 日的事件。当我在日期过滤器中输入该值时,它什么也不返回。

我无法在 django_filter 的文档站点中找到有关 DateFilter 的更深入的描述,或者在其 filter reference 中。或Using django-filter guide 。或者一般的任何地方。有什么想法我可能做错了什么吗?

我不认为日期选择器小部件的日期格式有任何问题,因为它以另一种形式使用(用于输入数据)并且工作正常。

附加信息:我正在使用 django-1.6 以及 django-filter 的最新版本

最佳答案

发现问题。

'start'字段是日期时间字段。因此,当仅查询日期时,找不到匹配项,因为它与时间不匹配。

例如:

如果我输入 01/14/2012,它会查找开始日期 datetime.date(2012, 01, 14, 0, 0) ,但实际开始日期可能是 datetime.datetime(2012, 01, 14, 21, 0, tzinfo=<UTC>) .

解决方案:

使用lookup_type='startswith''lookup_type='contains' (source)但是'contains'看起来更快

Class EventFilter(django_filters.FilterSet):
start = django_filters.DateFilter(
'start', label=_('With start date'),
lookup_type='contains' # use contains
)

...

关于python - 如何使用 django_filters.DateFilter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21743271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com