django rest框架m2m更新方法

django rest框架m2m更新方法,django,rest,django-rest-framework,manytomanyfield,m2m,Django,Rest,Django Rest Framework,Manytomanyfield,M2m,我的序列化程序中有几个m2m字段需要在更新时保存。我的create方法功能正常,但是我的代码出现以下错误: Django::2.0.1 DRF::3.7.7 禁止直接分配到多对多集合的前端。改为使用advice_areas.set 这曾经奏效,但我不确定为什么现在不行 任何帮助都将不胜感激 缩略型号: class Practice(models.Model): owner = models.OneToOneField(User, on_delete=models.CASCADE,

我的序列化程序中有几个m2m字段需要在更新时保存。我的create方法功能正常,但是我的代码出现以下错误:

Django::2.0.1 DRF::3.7.7

禁止直接分配到多对多集合的前端。改为使用advice_areas.set

这曾经奏效,但我不确定为什么现在不行

任何帮助都将不胜感激

缩略型号:

class Practice(models.Model):
    owner = models.OneToOneField(User, on_delete=models.CASCADE,
                             help_text='User account that owns this practice')
    name = models.CharField(max_length=200, verbose_name='Practice Name')
    advice_areas = models.ManyToManyField(AdviceArea, verbose_name='Areas of advice')

class AdviceArea(models.Model):
    name = models.CharField(max_length=255, null=False, blank=False, unique=True)
    active = models.BooleanField(default=True)

    def __str__(self):
        return self.name
缩写序列化程序:

class PracticeSerializer(serializers.HyperlinkedModelSerializer):
    advice_areas = serializers.HyperlinkedRelatedField(
    many=True, view_name='advicearea-detail', queryset=AdviceArea.objects.all())

设置ManyToManyField时出现问题。使用方法保存它


也张贴您的模型谢谢您的帮助,这仍然不起作用。它返回save得到一个意外的关键字参数'commit'@user149693直接保存M2M字段有问题,请检查我的更新答案谢谢Satendra。我不得不更改.add to.set,它成功了!非常感谢你。
class PracticeSerializer(serializers.HyperlinkedModelSerializer):
    advice_areas = serializers.HyperlinkedRelatedField(
    many=True, view_name='advicearea-detail', queryset=AdviceArea.objects.all())
for attr, value in validated_data.items():
    if str(attr) != 'advice_areas':
       setattr(instance, attr, value)
    else:
       instance.advice_areas.add(value)
instance.save()