Django模型有一个包含所有当前值的数据字典吗?

时间:2010-10-14 21:13:17

标签: python django django-models

这样的东西
my_model.data_dict['my_field']

哪个会为您提供该字段的当前值?需要这样的东西来与我的其他代码接口。

3 个答案:

答案 0 :(得分:3)

您可能还想查看queryset上的values方法。它将返回任何查询的字典,而不是通常的模型实例。

https://docs.djangoproject.com/en/1.3/ref/models/querysets/#values

(来自docs)

>>> Blog.objects.filter(name__startswith='Beatles').values()
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]

答案 1 :(得分:1)

这很棘手,但你可以这样做:

def model2dict(obj):
   return dict([(field, getattr(obj, field)) for field in obj._meta.get_all_field_names()])

所以你可以访问值:

model2dict(my_model)['my_field']

答案 2 :(得分:1)

他们有一个__dict__属性(这是一个标准属性):my_model.__dict__['my_field']

但是,执行此类访问的标准方法是getattrgetattr(my_model, 'my_field')

请参阅:http://docs.python.org/reference/datamodel.html#new-style-and-classic-classes。同时查找__slots__以了解没有此属性的类。

正如Jeremy在上面所说,任何使用django寻找此事的人都可以考虑使用queryset.values()https://docs.djangoproject.com/en/dev/ref/models/querysets/#values)。