django_filters нужно применять только для действий со списком - PullRequest
1 голос
/ 10 февраля 2020

У меня есть простой фильтр:

class ContentFilter(filters.FilterSet):
    app = filters.UUIDFilter(required=True)
    ...

Я использовал его на простом ModelViewSet

class ContentView(ModelViewSet):
    """View for Content"""
    serializer_class = ContentSerializer
    filterset_class = ContentFilter

Но когда я пытаюсь получить / contents /: id /, я получаю ошибку:

{
  "app": [
    "This field is required."
  ]
}

Итак, мой вопрос. Как я могу установить required=True только для моего list действия?

Мое решение:

 def filter_queryset(self, queryset):
        """We need display filter only on list request, otherwise we get error on /id/ requests about app is required"""
        if self.action != 'list':
            self.filterset_class = None
        return super().filter_queryset(queryset)

Какое лучшее решение, может быть, я могу настроить его внутри класса фильтра?

...