#python #django #django-rest-framework
#python #django #django-rest-framework
Вопрос:
Я пытаюсь ограничить набор объектов списка, доступных для объектов, созданных конкретными пользователями в Django Rest Framework. Я следил за документацией DRF для фильтрации по текущему пользователю, основное отличие, которое у меня есть, заключается в том, что пользователь определяется в отдельной модели для объектов, с которыми я работаю. Я пытаюсь использовать dunder, чтобы исправить это, но данные фильтруются неправильно.
Все объекты списка доступны любому пользователю, а не только некоторым объектам, доступным на основе создателя, который вошел в систему.
Мне интересно, может ли кто-нибудь предложить путь вперед?
Вот модели:
class UserList(models.Model):
list_name = models.CharField(max_length=255)
user = models.ForeignKey(User, on_delete=models.CASCADE)
class UserVenue(models.Model):
venue = models.ForeignKey(mapCafes, on_delete=models.PROTECT)
list = models.ForeignKey(UserList, on_delete=models.PROTECT)
И вот views.py
#this is where a user can assign cafe objects to their list object (but currently can see all lists)
class UserVenueViewSet(viewsets.ModelViewSet):
serializer_class = UserVenueSerializer
queryset = UserVenue.objects.all()
def get_queryset(self):
user = self.request.user
return UserVenue.objects.get_queryset().filter(list__user=user)
#this shows all lists for a user
class UserList(viewsets.ModelViewSet):
serializer_class = UserListSerializer
queryset = UserList.objects.all()
def get_queryset(self):
return super().get_queryset().filter(user=self.request.user)