j'utilisais précédemment APIViews telles que les suivantes:Django et REST ModelViewSet filtrage
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)
voici mon modèle:
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
Maintenant, je l'ai découvert ModelViewSet, ce qui semble très pratique, mais je n'arrive pas à filtrer pour l'utilisateur comme je le faisais auparavant dans l'APIView.
ma tentative de views.py avec ModelViewSet est la suivante et cela fonctionne mais je reçois tout le contenu et pas seulement le contenu lié à un seul utilisateur.
class AllProgramsApi(ModelViewSet):
serializer_class = ProgramSerializer
queryset = Program.objects.all()
Comment puis-je modifier la ModelViewSet pour qu'il affiche uniquement le contenu lié à l'utilisateur qui envoie la demande? Quelle est la meilleure méthode?
Merci.