我正在尝试在 django Rest Framework api 中过滤模型查询集,当我使用 django_filters.NumberFilter(**) 时,我收到此错误。
如果我编写自己的过滤器,我会过滤所有结果,但使用 NumberFilter 我无法使其工作。
所以,这是我的代码:型号
class Entry(EntityBase):
title = models.CharField(max_length=50)
description = models.TextField(max_length=200)
start = models.DateTimeField()
end = models.DateTimeField(null=True)
all_day = models.BooleanField()
involveds = models.ManyToManyField(Person, null=True)
by = models.ForeignKey(User)
过滤器组
class EntryFilter(filters.FilterSet):
#ym = MonthYearFilter(name='start')
m = django_filters.NumberFilter(name='start__month')
y = django_filters.NumberFilter(name='start__year')
class Meta:
model = Entry
View 集
class EntryViewset(viewsets.ModelViewSet):
queryset = Entry.objects.all()
serializer_class = EntrySerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_class = EntryFilter
错误
Unsupported lookup 'month' for DateTimeField or join on the field not permitted.
只需这样更新您的过滤器即可:
class EntryFilter(filters.FilterSet):
m = django_filters.NumberFilter(name='start', lookup_expr='month')
y = django_filters.NumberFilter(name='start', lookup_expr='year')
您还可以在查找表达式中使用 __gt、__gte、__lt .. 等。
希望有帮助。
我是一名优秀的程序员,十分优秀!