Django-filter Choice Filter 无法识别现有字段
Django-filter Choice Filter does not recognize an existing field
我正在尝试应用 ChoiceFilter,但它好像我所指的字段没有被识别,但它确实存在:
模型视图集:
class StartUpViewSet(NestedViewSetMixin, ModelViewSet):
"""
Class that provides List, Retrieve, Create, Update, Partial Update and Destroy actions for startups.
It also include a filter by startup status
"""
model = Startup
queryset = Startup.objects.all()
serializer_class = StartupSerializer
filter_backends = (filters.DjangoFilterBackend,)
filterset_fields = 'status'
过滤类:
class StartupFilter(filters.FilterSet):
status = filters.ChoiceFilter(choices=START_UP_STATUS)
class Meta:
model = Startup
fields = ['status']
和型号:
class Startup(models.Model):
header = models.CharField("Header", max_length=255)
title = models.CharField("Title", max_length=255)
description = models.CharField("description", max_length=255)
# TODO Change this to options instead of array
tags = ArrayField(models.CharField(max_length=10, blank=True), size=5)
# TODO Images to be stored in aws only url will be in DB
card_image = models.ImageField(upload_to='media/images/cards')
logo_image = models.ImageField(upload_to='media/images/logos')
main_img = models.ImageField(upload_to='media/images/main', null=True)
createdAt = models.DateTimeField("Created At", auto_now_add=True)
status = models.IntegerField(choices=START_UP_STATUS, default=1)
def __str__(self):
return self.title
错误:
'Meta.fields' must not contain non-model field names: s, t, a, u
正如名称 filtered_fields
所暗示的那样,它需要一个 集合 字段,而不是单个字段。因此,您应该将其实现为列表、元组、集合或任何其他字符串集合,而不是单个字符串:
class StartUpViewSet(NestedViewSetMixin, ModelViewSet):
# …
<strong>filterset_fields = ('status',)</strong>
如果您想指定自定义 FilterSet
,您可以通过以下方式传递对 class 的引用:
class StartUpViewSet(NestedViewSetMixin, ModelViewSet):
# no filterset_fields
<strong>filterset_class = StartupFilter</strong>
我正在尝试应用 ChoiceFilter,但它好像我所指的字段没有被识别,但它确实存在:
模型视图集:
class StartUpViewSet(NestedViewSetMixin, ModelViewSet):
"""
Class that provides List, Retrieve, Create, Update, Partial Update and Destroy actions for startups.
It also include a filter by startup status
"""
model = Startup
queryset = Startup.objects.all()
serializer_class = StartupSerializer
filter_backends = (filters.DjangoFilterBackend,)
filterset_fields = 'status'
过滤类:
class StartupFilter(filters.FilterSet):
status = filters.ChoiceFilter(choices=START_UP_STATUS)
class Meta:
model = Startup
fields = ['status']
和型号:
class Startup(models.Model):
header = models.CharField("Header", max_length=255)
title = models.CharField("Title", max_length=255)
description = models.CharField("description", max_length=255)
# TODO Change this to options instead of array
tags = ArrayField(models.CharField(max_length=10, blank=True), size=5)
# TODO Images to be stored in aws only url will be in DB
card_image = models.ImageField(upload_to='media/images/cards')
logo_image = models.ImageField(upload_to='media/images/logos')
main_img = models.ImageField(upload_to='media/images/main', null=True)
createdAt = models.DateTimeField("Created At", auto_now_add=True)
status = models.IntegerField(choices=START_UP_STATUS, default=1)
def __str__(self):
return self.title
错误:
'Meta.fields' must not contain non-model field names: s, t, a, u
正如名称 filtered_fields
所暗示的那样,它需要一个 集合 字段,而不是单个字段。因此,您应该将其实现为列表、元组、集合或任何其他字符串集合,而不是单个字符串:
class StartUpViewSet(NestedViewSetMixin, ModelViewSet):
# …
<strong>filterset_fields = ('status',)</strong>
如果您想指定自定义 FilterSet
,您可以通过以下方式传递对 class 的引用:
class StartUpViewSet(NestedViewSetMixin, ModelViewSet):
# no filterset_fields
<strong>filterset_class = StartupFilter</strong>