Django 序列化器更新全部

Ale*_*x D 2 python django django-views django-rest-framework

在序列化器中添加更新定义时,我是否必须将每个字段放入其中,还是有办法执行“任何”或“全部”操作?

def update(self, instance, validated_data):
    instance.id = validated_data.get('id', instance.id)
    instance.user.id = validated_data.get('user_id', instance.user.id)
    instance.city = validated_data.get('city', instance.city)
    # instance all fields?
    instance.save()
    return instance
Run Code Online (Sandbox Code Playgroud)

Jib*_*ews 5

  1. 第一个 pop 键不应像 id 一样更新。

    validated_data.pop('id')

  2. 使用循环。

    for key, value in validated_data.items(): setattr(instance, key, value) instance.save()