首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django:获取模型字段列表?

Django:获取模型字段列表?
EN

Stack Overflow用户
提问于 2010-06-24 07:29:30
回答 10查看 205.8K关注 0票数 240

我定义了一个(最终)从models.Model继承的User类。我想要获取为此模型定义的所有字段的列表。例如,phone_number = CharField(max_length=20)。基本上,我希望检索从Field类继承的任何内容。

我以为可以通过利用inspect.getmembers(model)来检索这些字段,但是它返回的列表不包含这些字段中的任何字段。看起来Django已经掌握了这个类,并添加了它的所有神奇属性,并去掉了实际定义的内容。所以..。如何获取这些字段?它们可能有一个函数来检索它们,用于它们自己的内部目的?

EN

回答 10

Stack Overflow用户

发布于 2015-06-16 17:03:11

这里提到的get_all_related_fields()方法是deprecated in 1.8。从现在开始就是get_fields()

代码语言:javascript
复制
>> from django.contrib.auth.models import User
>> User._meta.get_fields()
票数 77
EN

Stack Overflow用户

发布于 2012-12-10 21:14:38

我发现将这个添加到django模型中非常有用:

代码语言:javascript
复制
def __iter__(self):
    for field_name in self._meta.get_all_field_names():
        value = getattr(self, field_name, None)
        yield (field_name, value)

这允许您执行以下操作:

代码语言:javascript
复制
for field, val in object:
    print field, val
票数 57
EN

Stack Overflow用户

发布于 2015-02-11 16:10:18

这就是问题所在。我只在Django 1.7中测试它。

代码语言:javascript
复制
your_fields = YourModel._meta.local_fields
your_field_names = [f.name for f in your_fields]

Model._meta.local_fields不包含多对多字段。您应该使用Model._meta.local_many_to_many获取它们。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3106295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档