【发布时间】:2021-03-03 04:20:56
【问题描述】:
我试图在 django 中使用 SearchFilter,但我不明白为什么它不起作用
这是我的模型:
class Country(models.Model):
'''
Modelo de pais
'''
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=70, verbose_name='Nombre de pais', null=False, blank=False)
class Category(models.Model):
'''
Modelo de categoria
'''
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=150, verbose_name='Nombre de ciudad', null=False, blank=False)
class Client(models.Model):
'''
Modelo de cliente
'''
id = models.AutoField(primary_key=True)
name_client = models.CharField(max_length=150, null=False, blank=False)
country = models.ForeignKey(Country, verbose_name='Client country', on_delete=models.PROTECT,
null=False, blank=False)
city = models.CharField(max_length=150, verbose_name='Ciudad de residencia', null=False, blank=False)
category = models.ForeignKey(Category, verbose_name='Client category', on_delete=models.PROTECT,
null=False, blank=False)
user_created = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
updated_at = models.DateTimeField(auto_now=True)
这是我的看法:
class ClientViewset(viewsets.ModelViewSet):
"""
Api view encargada de administrar la
informacion del modelo cliente
"""
queryset = Client.objects.all()
serializer_class = ClientSerializer
filter_backends = (OrderingFilter, SearchFilter,)
search_fields = ('city')
当我向我的 api 发出请求时,我会在数据库中为模型客户端获取所有记录。
【问题讨论】:
-
确保
search_fields是一个元组或列表。在上面的代码中search_fields是string,而不是元组或列表。如果要使用 1 个元素进行元组,则需要添加逗号。search_fields = ('city', ) -
当请求需要在您的 url 中提供 quey 参数时:
http://example.com/api/users?search=rome
标签: python django filter django-rest-framework