Self.queryset или super.get_queryset() для пользовательского запроса?

Здесь я хочу переопределить мой набор квери для этого я должен получить набор квери по умолчанию с self.queryset или super().get_queryset().

Какой способ лучше?

class MyViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.filter(value__gte=1).select_related("related")
    serializer_class = Myserializer

    def get_queryset(self):
        user = self.request.user
        qs = super().get_queryset() # OR  qs = self.queryset
        if not user.is_superuser:
         qs = qs.filter(user=user)
        return qs

ИЛИ

 class MyViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = Myserializer

    def get_queryset(self):
        user = self.request.user
        qs = MyModel.objects.filter(value__gte=1).select_related("related")
        if not user.is_superuser:
         qs = qs.filter(user=user)
        return qs

Вы можете пойти обоими путями. Но если вы используете get_queryset, я предлагаю исключить переменную queryset, потому что это может запутать. Я считаю, что это будет немного более чистая версия второго варианта.

class MyViewSet(viewsets.ModelViewSet):
    serializer_class = Myserializer

    def get_queryset(self):
        user = self.request.user
        qs = MyModel.objects.filter(value__gte=1).select_related("related")
        if not user.is_superuser:
         qs = qs.filter(user=user)
        return qs
Вернуться на верх