gpt4 book ai didi

django-rest-framework 按日期过滤器=无

转载 作者:行者123 更新时间:2023-12-04 01:38:01 26 4
gpt4 key购买 nike

我正在使用 django-rest-frameworkdjango-filter .我需要检索小部件列表,其中 date属性是 None ,但无论我尝试过什么查询,我都会得到空响应或完整的、未过滤的响应。

这是我定义 View 集和过滤器集的方式。

class WidgetFilter(django_filters.FilterSet):
date = django_filters.DateTimeFilter(name='date', lookup_type='exact')
no_date = django_filters.DateTimefilter(name='date', lookup_type='isnull')
class Meta:
model = Widget
fields = ['date',]

class WidgetSet(viewsets.ModelViewSet):
model = Widget
filter_class = WidgetFilter

以下查询结果为空 []回应:
?date=None
?date=0
?date=NULL
?date=False
?date=2012-05-24T11:20:06Z # a known and correct date

以下查询导致返回所有对象:
?date=
?no_date=True
?no_date=False
?no_date=1
?no_date=0

很感谢任何形式的帮助!我一直无法找到有关使用日期(或通过 None 作为过滤器值)和 django-filter 的任何信息。特别是通过 django-rest-framework .

如果没有更优雅的方法,这里是我如何解决我的解决方法,但我仍然想知道使用 django-filter 的解决方案,如果存在。
class WidgetSet(viewsets.ModelViewSet):
model = Widget

def get_queryset(self):
if 'no_date' in self.request.QUERY_PARAMS:
return self.model.objects.filter(date=None)
return self.model.objects.all()

最佳答案

指定 isnull直接在过滤器的 name参数为 'date__isnull'似乎使用 Django REST Framework 3.1.3 为我工作。

class WidgetFilter(django_filters.FilterSet):
date = django_filters.DateTimeFilter(name='date')
no_date = django_filters.BooleanFilter(name='date__isnull')
class Meta:
model = Widget
fields = []

关于django-rest-framework 按日期过滤器=无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21519626/

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