我可以在不指定所有实例字段的情况下在一行中更新实例吗?
例如:
def update(self, instance, validated_data):
instance.name = validated_data.get('name', instance.name)
instance.address = validated_data.get('address', instance.address)
instance.save()
return instance
想象一下,如果姓名和地址旁边还有更多字段。 我可以从 validated_data 中提取 kwargs 吗?就像在 create() 方法中一样:
def create(self, validated_data):
return Person.objects.create(**validated_data)
请您参考如下方法:
它不是单行但足够短 ( extracted from the drf sources ):
def update(self, instance, validated_data):
for attr, value in validated_data.items():
setattr(instance, attr, value)
instance.save()
return instance
