禁止直接分配到多对多集合的反面。使用category.set()代替

问题描述 投票:0回答:1

M2M Django 分配问题

这就是我收到错误的地方:

    def update(self, instance, validated_data):
        instance.title = validated_data.get('title', instance.title)
        instance.category = validated_data.get('category', instance.category)
        instance.price = validated_data.get('price', instance.price)
        instance.description = validated_data.get('description', instance.description)
        instance.image = validated_data.get('image', instance.image)
        instance.active = validated_data.get('active', instance.active)
        instance.deleted = validated_data.get('deleted', instance.deleted)
        instance.parent_category.set(validated_data.get('parent_category'))
        instance.save()
        return instance

我也尝试了“添加”方法,但它得到了同样的错误

python django database sqlite django-rest-framework
1个回答
0
投票

“category”字段似乎是一个 ManyToManyField,并且您正在尝试直接为其分配值。

您可以尝试将该行替换为:

instance.category.set(validated_data.get('category', instance.category))

如果您不想替换类别而是添加新类别,您可以尝试:

instance.category.add(validated_data.get('category', instance.category))
© www.soinside.com 2019 - 2024. All rights reserved.