django-rest-framework
モデルオブジェクトの作成に関する特定のドキュメントを明確にしたいと思います。これまでのところ、このようなイベントを処理する方法には3つのアプローチがあることがわかりました。
シリアライザーの
create()
方法。これがドキュメントですclass CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data)
ModelViewset
create()
メソッド。ドキュメンテーションclass AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly]
ModelViewset
perform_create()
メソッド。ドキュメンテーションclass SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user)
これらの3つのアプローチは、アプリケーション環境に応じて重要です。
しかし、いつ各create() / perform_create()
関数を使用する必要がありますか??。一方、modelviewsetcreate()
とserializerの単一のPOSTリクエストに対して2つのcreateメソッドが呼び出されたというアカウントを見つけましたcreate()
。
うまくいけば、誰かが説明するために彼らの知識のいくつかを共有するでしょう、そしてこれは確かに私の開発プロセスで非常に役立つでしょう。
create(self, validated_data)
、データ検証ロジックに焦点を当てているということですか?さらに、特定のシリアライザーのデータを応答に戻すのに役立ちますか?