Ich habe einen Fall wie folgt, wo Sie eine benutzerdefinierte geschachtelte Serializer-Beziehung mit einem eindeutigen Feld haben. Musterkoffer:Einzigartige Validierung auf verschachtelten Serializer auf 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)
Das Problem: Wenn ich versuche, wie ein JSON-Objekt zu speichern { "name": "Der Prinz", "Genre": { "name": "History"}} DRF versuchen um die genre object unique constraint zu validieren und wenn "History" existiert gibt mir eine Ausnahme, weil ein Genre mit dem Namen "History" muss eindeutig sein, und das ist wahr, aber ich versuche nur das Objekt zu beziehen und nicht zusammen zu erstellen.
Vielen Dank !!
Vielen Dank! Aber wenn ich die Validierung im verschachtelten Serializer brauche, wenn ich es zum Speichern von Genre-Instanzen verwende? Gibt es eine Möglichkeit, nur zu prüfen, ob ich eine Genre-Instanz erstelle und nicht, ob ich eine Book-Instanz erstellen möchte? Danke nochmal! –
Das sollte Teil eines zweiten Validierungsschritts sein - sagen wir im create/update Teil, indem wir ValidationError erhöhen. – Linovia
Das war wirklich hilfreich! Vielen Dank! –