django-rest-framework
Bir model nesnenin oluşturulmasıyla ilgili verilen dokümantasyonu netleştirmek istiyorum . Şimdiye kadar bu tür olayların nasıl ele alınacağına dair 3 yaklaşım olduğunu buldum.
Serileştiricinin
create()
yöntemi. İşte belgelerclass CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data)
ModelViewset
create()
yöntemi. Dokümantasyonclass AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly]
ModelViewset
perform_create()
yöntemi. Dokümantasyonclass SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user)
Bu üç yaklaşım, uygulama ortamınıza bağlı olarak önemlidir.
Ancak her create() / perform_create()
işlevi NE ZAMAN kullanmalıyız ? Öte yandan, modelviewset create()
ve serileştiricilerin tek bir gönderi için iki oluşturma yönteminin çağrıldığına dair bazı hesaplar buldum create()
.
Umarım herhangi biri açıklamak için bazı bilgilerini paylaşır ve bu kesinlikle geliştirme sürecimde çok yardımcı olacaktır.
create(self, validated_data)
serileştiriciye içinde, bunun veri doğrulama mantığı odaklanır demektir? ve daha fazlası, verilen serileştiricinin verilerini yanıta geri döndürmeye yardımcı olabilir, değil mi?