私はこのようなケースがあります。このケースでは、独自のネストされたシリアライザ関係が一意のフィールドにあります。サンプルケース:Django Rest Frameworkのネストされたシリアライザでの一意の検証
class GenreSerializer(serializers.ModelSerializer):
class Meta:
fields = ('name',) #This field is unique
model = Genre
class BookSerializer(serializers.ModelSerializer):
genre = GenreSerializer()
class Meta:
model = Book
fields = ('name', 'genre')
def create(self, validated_data):
genre = validated_data.pop('genre')
genre = Genre.objects.get(**genre)
return Book.objects.create(genre=genre, **validated_data)
問題:DRFトライ私は{: "王子"、 "ジャンル":{ "名前" "歴史"} "名前"}のようなJSONオブジェクトを保存しようとするとジャンルオブジェクトの一意性制約を検証するために「履歴」が存在する場合は、名前が「履歴」のジャンルが一意でなければならないため、例外がスローされます。それは本当ですが、オブジェクトを関連付けるだけで、
ありがとうございます!
ありがとうございました!しかし、もし私がGenreインスタンスを保存するためにそれを使用すると、ネストされたシリアライザで検証が必要なのでしょうか? Genreインスタンスを作成し、Bookインスタンスを作成する場合にのみ作成するかどうかを確認する方法はありますか?ありがとうございました! –
これは、2番目の検証ステップの一部である必要があります。たとえば、ValidationErrorを生成して作成/更新部分を作成します。 – Linovia
これは本当に役に立ちました!大いに感謝する! –