Django模型循环字段
我该如何遍历并获取一个Django模型的所有字段呢?
我知道用 foo.item._meta.get_all_field_names()
可以得到所有字段的名字。那我该如何在模型实例上访问这些字段(包括它们的实际值)呢?(除了用正常的方式 foo.fieldname
)。
我需要这样做是为了为我的模型构建一个自定义的输出,包括它的多对多关系。有什么想法吗?
2 个回答
3
这看起来不太美观,但它可以正常工作:
for each in model_instance._meta.fields:
print each.value_from_object(model_instance)
不过,我还有另一个建议。考虑到你的需求是
为我的模型构建一个自定义输出,包括它的多对多关系。
那你考虑一下 序列化 实例为合适的格式(比如XML或JSON),然后再进行处理?这样可以避免依赖 _meta
或任何内部方法(这些方法可能会改变)。
8
这样做怎么样:
getattr(foo.__class__, <field_name>)
这样应该能让你得到字段对象,而不是在给定模型实例中的值。如果你想要在这个模型实例中获取字段的值,可以这样调用:
getattr(foo, <field_name>)