ich zuvor APIViews wie die folgenden verwenden:Django REST und ModelViewSet Filterung
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)
hier ist mein Modell:
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
Jetzt entdeckt ModelViewSet Ich habe, Das sieht sehr praktisch aus, aber ich kann anscheinend nicht in der Lage sein, für den Benutzer zu filtern, wie ich es zuvor in der APIView getan habe.
mein Versuch von views.py mit ModelViewSet ist das Folgende und es funktioniert, aber ich bekomme den gesamten Inhalt und nicht nur den Inhalt für einen einzelnen Benutzer.
class AllProgramsApi(ModelViewSet):
serializer_class = ProgramSerializer
queryset = Program.objects.all()
Wie kann ich die ModelViewSet optimieren, so dass sie nur den Inhalt für den Benutzer im Zusammenhang zeigt, der die Anforderung sendet? Was ist die beste Methode?
Danke.