django对象获取/设置字段

dan*_*ndu 28 django-models

我可以通过其他方式获取对象字段的值obj.field吗?有类似obj.get('field')存在吗?设置字段值的方法相同.

Joã*_*cus 69

要获取字段的值:

getattr(obj, 'field_name')
Run Code Online (Sandbox Code Playgroud)

要设置字段的值:

setattr(obj, 'field_name', 'field value')
Run Code Online (Sandbox Code Playgroud)

获取Django对象的所有字段和值:

[(field.name, getattr(obj,field.name)) for field in obj._meta.fields]
Run Code Online (Sandbox Code Playgroud)

您可以阅读Model _meta API的文档,它非常有用.

  • 或者,用字典中的项更新'''obj''':[dictionary.items()中的[key,value]的[setattr(obj,key,value)] (2认同)

elz*_*app 6

你为什么要这个?

你可以用

obj.__dict__['field']
Run Code Online (Sandbox Code Playgroud)

我想......虽然这不是方法调用

changed=[field for (field,value) in newObj.__dict__ if oldObj.__dict__[field] != value]
Run Code Online (Sandbox Code Playgroud)

将为您提供已更改的所有字段的列表.

(虽然我不是100%肯定)