Как получить товары только для активных владельцев (пользователей) с помощью 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)
это вернет все продукты, которые активны, и владелец продукта также активен.