Как получить товары только для активных владельцев (пользователей) с помощью Django Rest Framework?

Я создаю API электронной коммерции с помощью DRF. Я хотел бы получать и отображать только активные товары от активных владельцев (пользователей) с помощью ModelViewSet Как я могу это сделать? Вот мой код :

views.py

class ProductViewSet(viewsets.ModelViewSet):
    serializer_class = ProductSerializer
    parser_classes = (MultiPartParser, FormParser)
    search_fields = ['title', 'description']
    ordering_fields = ['price', 'last_update']
    permission_classes = [permissions.IsAuthenticatedOrReadOnly, IsVendorOrReadOnly, IsOwnerOrReadOnly]

    def get_queryset(self):
        return Product.objects.filter(is_active=True)

        # WHEN I'M USING THIS COMMENT CODE, I CAN'T RETRIEVE ONE PRODUCT BY PK
        # products = Product.objects.all()
        # new_products = []
        # for p in products:
        #     if p.owner.is_active and p.is_active:
        #         new_products.append(p)
        # return new_products

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user)

если у вас есть такая модель:

class Prooduct(m.Model):
    ...
    is_active = m.BooleanField()
    owner = m.ForeingKey(User, ...)

Затем по методу get_queryset

def get_queryset(self)

    return Product.objects.filter(is_active = True, owner__is_active = True)

это вернет все продукты, которые активны, и владелец продукта также активен.

Вернуться на верх