【问题标题】:why my django rest_framework does not work?为什么我的 django rest_framework 不起作用?
【发布时间】: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


【解决方案1】:

我认为这是因为您没有向 api 端点提供查询参数。

试试

<api_endpoint>?city=rome

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2021-12-07
    • 2020-01-19
    相关资源
    最近更新 更多