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

我以为我可以利用inspect.getmembers(model)来检索这些字段,但是它返回的列表不包含这些字段中的任何字段.看起来Django已经掌握了这个类,并添加了它的所有神奇属性,并go 掉了实际定义的内容.所以...我怎么才能拿到这些田地呢?它们可能有检索它们的功能,用于它们自己的内部目的?

推荐答案

因为大多数答案都过时了,我会试着向你通报Django 2.2的最新情况. 此处帖子-您的应用程序(帖子、博客、store 等)

1) From model链接:https://docs.djangoproject.com/en/stable/ref/models/meta/

from posts.model import BlogPost

all_fields = BlogPost._meta.fields
#or
all_fields = BlogPost._meta.get_fields()

请注意:

all_fields=BlogPost._meta.get_fields()

Will also get some relationships, which, for ex: you can not display in a view.
As in my case:

Organisation._meta.fields
(<django.db.models.fields.AutoField: id>, <django.db.models.fields.DateField: created>...

Organisation._meta.get_fields()
(<ManyToOneRel: crm.activity>, <django.db.models.fields.AutoField: id>, <django.db.models.fields.DateField: created>...

2) From instance

from posts.model import BlogPost

bp = BlogPost()
all_fields = bp._meta.fields

3) From parent model

Let's suppose that we have Post as the parent model 和 you want to see all the fields in a list, 和 have the parent fields to be read-only in Edit mode.

from django.contrib import admin
from posts.model import BlogPost 

@admin.register(BlogPost)
class BlogPost(admin.ModelAdmin):
    all_fields = [f.name for f in Organisation._meta.fields]
    parent_fields = BlogPost.get_deferred_fields(BlogPost)

    list_display = all_fields
    read_only = parent_fields

Django相关问答推荐

""关系"core_Boundary_summary的列user_id中的空值"违反了非空约束|失败行包含(2,title,string,null)

在Django中使用Generil.ListView类时,分页不起作用

Django modelform在包含在另一个模板中时不呈现

如何从列中捕获数据并将其添加到下拉菜单中,以便表单填充另一个表

如何在Django查询集中查询多对多字段内是否存在实例

通过 B 的外键列表访问模型 B 的行

如何使更新记录在 Django 模型中传递信号?

django 无法识别实现自定义后端

如何从基于类的视图将用户保存在 django 模型中

如何组织 Django REST Framework url

Django 模型:如何查找自动生成的字段列表

多租户 Django 应用程序:根据请求更改数据库连接?

可插拔应用程序的Django默认设置约定?

Django 密码以什么格式存储在数据库中?

更新Django模型对象多个字段的有效方法

jinja2模板引擎中的这个-是做什么的?

Django urls 直接到 html 模板

如何获取经过身份验证的用户列表?

如何检测 Heroku 的环境?

在 Django 中使用 select_related Select 特定字段