将实例添加到 django rest 框架中的 manytomany 字段

add instances to a manytomany field in django rest framework

我有一个非常简单的问题,令我惊讶的是之前该网站上没有人问过这个问题。 我有以下两个型号:

# models.py
class Film(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=150)
    genre = models.ManyToManyField(Genre)

class Genre(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=100, unique=True)

我需要创建一个 API 来获取 2 个整数、电影 ID 和流派 ID,并将所述流派添加到电影中。看起来很简单,但我不知道我该怎么做。我真的需要帮助。

你可能想要这个:

class GenreSerializer(serializers.ModelSerializer):
        class Meta:
            model = Genre
            fields = ('name', 'id')


class FilmSerializer(serializers.ModelSerializer):
    genre = GenreSerializer(many=True, read_only=False)

    class Meta:
        model = Film
        fields = ('name', 'id', 'genre')

    def update(self, instance, validated_data):
        genres_data = validated_data.pop('genre')
        instance = super(FilmSerializer, self).update(instance, validated_data)

        for genre_data in genres_data:
            genre_qs = Genre.objects.filter(name__iexact=genre_data['name'])

            if genre_qs.exists():
                genre = genre_qs.first()
            else:
                genre = Genre.objects.create(**genre_data)

            instance.genre.add(genre)

        return instance