【发布时间】:2021-09-11 06:49:48
【问题描述】:
我有几个模型之间存在多对多关系,我需要重写 create 和 update 方法以使 POST 和 PUT 请求在 DRF 中工作。
到目前为止,这是我的代码:
class CreateFolderSerializer(serializers.ModelSerializer):
class Meta:
model = Folder
fields = ("id", "title", "description", "users")
def create(self, validated_data):
users = validated_data.pop(
'users') if 'users' in validated_data else []
folder = Folder.objects.create(**validated_data)
folder.users.set(users)
return folder
此创建方法完美运行。
我尝试为更新方法重新创建相同的逻辑,但它不起作用:
class FolderSerializer(serializers.ModelSerializer):
documents = DocumentSerializer(many=True, read_only=True)
class Meta:
model = Folder
fields = '__all__'
def update(self, instance, validated_data):
users = validated_data.pop('users') if 'users' in validated_data else []
instance.users.set(users)
instance.save()
return instance
当我发送 PUT 请求时,对象根本没有被修改,它被完全删除。
有什么线索吗? 非常感谢。
【问题讨论】:
标签: django post django-rest-framework many-to-many put