Django模型迭代字段

时间:2010-08-23 09:47:31

标签: python django django-models

如何迭代和检索django模型的所有字段?

我知道foo.item._meta.get_all_field_names()给我带来了所有字段名称。 如何在模型实例上访问这些字段(包括它们的实际值)? (正常符号除外foo.fieldname)。

我需要这个来为我的模型构建一个自定义输出,包括它的manyTomany关系。 有什么想法吗?

2 个答案:

答案 0 :(得分:8)

怎么样:

getattr(foo.__class__, <field_name>)

这应该为您提供字段对象,而不是给定模型实例中的值。如果你想要给定模型中的字段值,你可以这样调用它:

getattr(foo, <field_name>)

答案 1 :(得分:2)

这看起来很难看,但它会起作用:

for each in model_instance._meta.fields: 
    print each.value_from_object(model_instance)

那就是说,我有另一个建议。鉴于您的要求是

  

为我的模型构建自定义输出,包括manyTomany关系。

如何将serializing实例改为合适的格式(XML / JSON)然后再进行处理?这避免了对_meta或任何内部方法(可能会改变)的依赖。