Как я могу фильтровать набор запросов по текущему пользователю в django rest framework
class SalonCarDetailsSerializer(serializers.ModelSerializer):
salon = PrimaryKeyRelatedField(queryset=Salon.objects.filter(owner=?))
class Meta:
model = SalonCarDetails
fields = ["salon", "car", "price", "number_of_cars"]
CurrentUserDefault() не работает
Хотелось бы увидеть ваш views.py, но в любом случае я делаю некоторые предположения о нем и помещаю его в сценарий реализации класса.
#
### views.py
#
# Django native libraries
from rest_framework.serializers import Serializer
from rest_framework import viewsets, mixins, status
from django.db.models import Q
# your serializer and model
from .serializers import YourSalonCarSerializer
from .models import SalonCarDetails
class YourCustomViewSet(mixins.RetrieveModelMixin,
mixins.ListModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
viewsets.GenericViewSet):
queryset = SalonCarDetails.objects.all()
serializer_class = YourSalonCarSerializer
def get_queryset(self):
if self.request.user.is_anonymous:
return []
lookups = Q(user=self.request.user)
queryset = self.queryset.filter(lookups)
Ну, вы можете написать собственное поле PrimaryKeyRelated следующим образом:
class SalonKeyRelatedField(serializers.PrimaryKeyRelatedField):
def get_queryset(self):
qs = super().get_queryset()
request = self.context.get('request')
return qs
тогда вы можете фильтровать qs по request.user, это будет вызываться только при POST и PUT запросах. Затем вы можете включить его в ваш сериализатор
salon = SalonKeyRelatedField()
не забудьте включить салон в свои поля