Skip to main content
 首页 » 编程设计

python之带有来自 validated_data 的 kwargs 的 Django Rest Framework update()

2025年05月04日23mfryf

我可以在不指定所有实例字段的情况下在一行中更新实例吗?

例如:

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