【发布时间】:2018-03-01 14:17:15
【问题描述】:
我之前使用过如下 APIView:
views.py
class AllProgramsApi(APIView):
def get(self, request):
user = self.request.user
userprograms = Program.objects.filter(user=user)
serializer = ProgramSerializer(userprograms, many=True)
return Response(serializer.data)
这是我的模型:
class Program(models.Model):
program_name = models.CharField(max_length=50)
program_description = models.CharField(max_length=250)
cycles = models.ManyToManyField(Cycle)
is_favourite = models.BooleanField(default="False")
user = models.ForeignKey(User, on_delete=models.CASCADE)
def get_absolute_url(self):
return reverse('programs:program', kwargs={'pk': self.pk})
def __str__(self):
return self.program_name
现在我发现了ModelViewSet,它看起来很方便,但是我似乎无法像之前在APIView 中那样过滤用户。
我对带有 ModelViewSet 的 views.py 的尝试如下,它有效,但我得到了所有内容,而不仅仅是与单个用户相关的内容。
class AllProgramsApi(ModelViewSet):
serializer_class = ProgramSerializer
queryset = Program.objects.all()
如何调整 ModelViewSet 使其仅显示与发送请求的用户相关的内容?最好的方法是什么?
谢谢。
【问题讨论】:
标签: python django django-rest-framework django-views