Ich implementiere 'Follow' CreateAPIView.CreateAPIView mit leerem Serializer (kein Feld)
FollowCreateAPIView - 'angemeldete Benutzer' von self.request.user wird - 'Benutzer-ID' wird die 'angemeldeten Benutzer' (von url) folgen will - mit den Informationen über, Folge neuen Daten!
Hier urls.py ist
url(r'^follow/(?P<user_id>\d+)$', FollowCreateAPIView.as_view(), name="user_profile"),
Modell
class Follow(models.Model):
follower = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='follower')
following = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='following')
created_at = models.DateTimeField(auto_now_add=True)
CreateAPIView (Ich kann nicht User_id von URL erhalten; print(following_id)
kehrt None
)
class FollowCreateAPIView(generics.CreateAPIView):
queryset = Follow.objects.all()
serializer_class = FollowCreateSerializer
def perform_create(self, serializer):
following_id = self.request.GET.get('user_id', None)
print(following_id) <<<<- HERE!
following_user = User.objects.filter(id=following_id)
serializer.save(follower=self.request.user, following=following_user)
Serializer
- Können Sie dieses Problem beheben? Und diese
Like
Funktion scheint sehr verbreitet. Haben Sie einen besseren Ansatz? (wenn Sie ... haben)
Vielen Dank!
Überprüfen Sie die Update-Ansichten von DRF. Ich bin mir sicher, dass es Code gibt, der bereits das tut, was Sie brauchen - verwenden Sie die ID in der URL, um eine Modellinstanz zu erhalten, oder geben Sie 404 zurück, falls sie nicht gefunden wird. Sie könnten die verbleibende Logik in einer Unterklasse anpassen. – Risadinha