Как правильно добавить два сложных утверждения в queryset.filter в Django?

Я фильтрую свой набор представлений статей на Django. Код ниже работает нормально,

from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token
from rest_framework import serializers, viewsets,filters
from rest_framework.permissions import IsAuthenticated
from rest_framework import generics
from url_filter.integrations.drf import DjangoFilterBackend

class ArticleFilterBackEnd(filters.BaseFilterBackend):
    
    def filter_queryset(self, request, queryset, view):
        return queryset.filter(
            article__author__followers__author=request.user
        )

Но я также хочу использовать queryset.exclude() внутри того же цикла и фильтра, где article__author__followers__issilent= True

Оператор

when находится в одном цикле с request.user, поэтому он не указывает ни на какой другой цикл-последователь.

Как я могу это сделать?

Вы можете использовать filter вместо exclude:

from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token
from rest_framework import serializers, viewsets,filters
from rest_framework.permissions import IsAuthenticated
from rest_framework import generics
from url_filter.integrations.drf import DjangoFilterBackend

class ArticleFilterBackEnd(filters.BaseFilterBackend):
    def filter_queryset(self, request, queryset, view):
       return queryset.filter(article__author__followers__author=request.user, article__author__followers__issilent=False)
Вернуться на верх