在Django rest框架中添加m2m关系

时间:2019-09-17 09:37:26

标签: django django-rest-framework

我需要在Django rest框架中的两个对象之间添加多个m2m关系

  class Theme(models.Model):
        slug = models.CharField(primary_key=True, unique=True, db_index=True)
        menu = models.ManyToManyField(Menu, related_name='themes')


class Menu(models.Model):
    pass

序列化器

class MenuAdminSerializer(serializers.ModelSerializer):
    themes = serializers.SlugRelatedField(many=True,
                                          read_only=False,
                                          required=False,
                                          slug_field='slug',
                                          queryset=Theme.objects.all())

    class Meta:
        model = Menu
        fields = ('themes',)


    def create(self, validated_data):
        themes = validated_data.pop('themes')
        menu.themes.set(*themes)

我通过了这样的主题[[one],“ another”],但出现的错误是'Theme' object is not iterable

1 个答案:

答案 0 :(得分:2)

将多个字段添加到多个字段是不合适的。

 menu.themes.set(*themes)

应更改为

 menu.themes_set.add(*themes)

相关example