Фильтр не работает в Django Rest Framework - PullRequest
0 голосов
/ 24 февраля 2020

Я хотел бы отфильтровать свои данные, как предполагается, что у меня есть одна модель =>

  • Пользователь
    • UserID
    • Имя пользователя
    • UserDescription

То, что я хочу, это =>

  • Если я выберу как => api/user/?userid=1, он должен вернуть только userid == 1 результат.
  • Если я выберу как => api/user/?username=test, он должен вернуть только имя пользователя == результат теста.

Что я сделал?

Я установил django -фильтр и добавьте это

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
}

в setting.py, и я проверяю так, но

почему я получаю все свои записи? даже URL выбран только userid = 1 api/user/?userid=1

и

Если я тестирую с неправильным параметром URL и получаю все записи, даже неправильный параметр.

I сделать то же самое с этим => https://www.django-rest-framework.org/api-guide/filtering/#generic -фильтрация

Обновление

Вот представление

class LeaveViewSet(viewsets.ModelViewSet):
    queryset = Leave.objects.all()
    serializer_class = LeaveSerializer

1 Ответ

1 голос
/ 24 февраля 2020

Вы должны указать атрибут filterset_fields - (do c)

class LeaveViewSet(viewsets.ModelViewSet):
    queryset = Leave.objects.all()
    serializer_class = LeaveSerializer
    <b>filterset_fields = ['user','other_fields']</b>

Поскольку вы хотите найти вложенное отношение, вы можете укажите вложенный поиск как

filterset_fields = ['user__id','user__username']

и, следовательно, URL станет api/user/<b>?user__id</b>=1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...