如何迭代和检索django模型的所有字段?
我知道foo.item._meta.get_all_field_names()
给我带来了所有字段名称。
如何在模型实例上访问这些字段(包括它们的实际值)? (正常符号除外foo.fieldname
)。
我需要这个来为我的模型构建一个自定义输出,包括它的manyTomany关系。 有什么想法吗?
答案 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
或任何内部方法(可能会改变)的依赖。