Django:获取模型字段列表?
我已经定义了一个User
类(最终)从models.Model
继承。 我想获得为此模型定义的所有字段的列表。 例如, phone_number = CharField(max_length=20)
。 基本上,我想检索从Field
类继承的任何东西。
我想我可以通过利用inspect.getmembers(model)
来获取这些内容,但是它返回的列表不包含任何这些字段。 它看起来像Django已经掌握了这个类,并添加了它的所有魔法属性,并删除了实际定义的内容。 所以...我怎么能得到这些领域? 他们可能有一个功能来检索他们的内部目的?
对于Django版本1.8和更高版本:
get_all_field_names()
方法从Django 1.8开始被弃用,并将在1.10中被删除。
上面链接的文档页面提供了完全向后兼容的get_all_field_names()
,但对于大多数目的而言[f.name for f in MyModel._meta.get_fields()]
应该工作得很好。
对于1.8之前的Django版本:
model._meta.get_all_field_names()
这应该够了吧。
这需要一个实际的模型实例。 如果你拥有的只是django.db.models.Model
的子类,那么你应该调用myproject.myapp.models.MyModel._meta.get_all_field_names()
此处提到的get_all_related_fields()
方法在1.8中已被弃用。 从现在起它是get_fields()
。
>> from django.contrib.auth.models import User
>> User._meta.get_fields()
我发现添加到Django模型相当有帮助:
def __iter__(self):
for field_name in self._meta.get_all_field_names():
value = getattr(self, field_name, None)
yield (field_name, value)
这可以让你做到:
for field, val in object:
print field, val
链接地址: http://www.djcxy.com/p/38723.html