почему мой django rest_framework не работает?

#python #django #filter #django-rest-framework

#питон #джанго #Фильтр #django-rest-framework

Вопрос:

я пытаюсь использовать SearchFilter в django, но я не понимаю, почему он не работает

вот мои модели:

 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, я получаю все записи в базе данных для клиента модели.

Комментарии:

1. Убедитесь search_fields , что это кортеж или список. В вашем приведенном выше коде search_fields это string не кортеж или список. Если хотите создать кортеж из 1 элемента, нужно добавить запятую. search_fields = ('city', )

2. При запросе neet на предоставление параметров quey в вашем URL: http://example.com/api/users?search=rome

Ответ №1:

Я думаю, это потому, что вы не предоставляете параметры запроса конечной точке api.

Попробуйте

 <api_endpoint>?city=rome