shr*_*ddd 8 python django models
我试图获取给定对象的所有现有模型字段和属性的列表.是否有一种干净的方式来检查对象,以便我可以获得字段和属性的字典.
class MyModel(Model)
url = models.TextField()
def _get_location(self):
return "%s/jobs/%d"%(url, self.id)
location = property(_get_location)
Run Code Online (Sandbox Code Playgroud)
我想要的是返回一个如下所示的字典:
{
'id' : 1,
'url':'http://foo',
'location' : 'http://foo/jobs/1'
}
Run Code Online (Sandbox Code Playgroud)
我可以model._meta.fields
用来获取模型字段,但这不会给我属性但不是真正的DB字段.
Joh*_*ery 10
如果您只想要模型字段和属性(使用属性声明的那些),那么:
def get_fields_and_properties(model, instance): field_names = [f.name for f in model._meta.fields] property_names = [name for name in dir(model) if isinstance(getattr(model, name), property)] return dict((name, getattr(instance, name)) for name in field_names + property_names) instance = MyModel() print get_fields_and_properties(MyModel, instance)
这里唯一的一点就是在类中运行以查找与属性描述符对应的字段.通过类访问它们给出了描述符,而通过实例它给出了值.
归档时间: |
|
查看次数: |
6999 次 |
最近记录: |