首页 > 解决方案 > 在 Django rest 框架中添加 m2m 关系

问题描述

我需要在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

标签: djangodjango-rest-framework

解决方案


您添加多对多字段是不合适的。

 menu.themes.set(*themes)

这应该更改为

 menu.themes_set.add(*themes)

相关例子


推荐阅读