Django模型迭代字段
问题描述:
我如何迭代和检索Django模型的所有字段?Django模型迭代字段
我知道foo.item._meta.get_all_field_names()
带给我所有的字段名称。 如何在模型实例*问这些字段(包括其实际值)? (除正常记号foo.fieldname
)。
我需要这个,以便为我的模型构建一个自定义输出,包括它的manyTomany关系。 任何想法?
答
如何:
getattr(foo.__class__, <field_name>)
这应该给你的域对象,而不是在给定的模型实例的值。如果你想现场在给定的模型insance值,你可以这样调用:
getattr(foo, <field_name>)
答
这看起来丑陋,但它的工作:
for each in model_instance._meta.fields:
print each.value_from_object(model_instance)
不过,我还有一个建议。鉴于您的要求是
为我的模型构建自定义输出,包括其许多关系的关系。
如何将实例转换为合适的格式(XML/JSON)然后处理?这可以避免依赖_meta
或任何内部方法(可能会更改)。
+1
Manoj感谢您的补充。丑陋的人仍然不能解决我ManyToMany关系的问题:(我想我将不得不去串行化! – 2010-08-23 11:13:10
正如你刚才提到的那样,这只会返回字段对象。我需要给定模型实例的字段值。相应地编辑问题... – 2010-08-23 10:44:59
我已经编辑了答案,希望这有助于。 – gruszczy 2010-08-23 10:50:59