Фильтровать набор запросов для текущего пользователя в среде Django Rest, где пользователь находится в отдельной модели

#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)