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