Вот что я пытаюсь решить
if genre exit:
find the PK that matches the "type" field
link the result(s) with Movie class
else:
create the "type" or type(s) inside of Genre class
"link" the key(s) with Movie Class
Жанр сериализатора
class GenreSerializer(serializers.ModelSerializer):
class Meta:
model = Genre
fields = ('type',)
Mov ie Сериализатор
class MovieSerializer(serializers.ModelSerializer):
genres = GenreSerializer(many=True)
class Meta:
model = Movie
fields = (
'id', 'name', 'description', 'imdb_score', 'popularity', 'director', 'genres'
)
def create(self, validated_data):
genre_type = validated_data.pop('genres')
movie = Movie.objects.create(**validated_data)
for each_type in genre_type:
g = Genre.objects.get_or_create(**each_type)[0]
print(g.pk)
movie.genres.add(g)
return movie
С помощью приведенного выше кода я могу создать новый mov ie с жанрами, но не могу создать новый mov ie с существующими жанрами.
Вход
{
"name": "Movie3",
"description": "Content",
"imdb_score": 9.5,
"popularity": 98.0,
"director": "George Miller",
"genres": [
{"type":"Genre2"}
]
}
Выход
{
"genres": [
{
"type": [
"Genre with this type already exists."
]
}
]
}