由于大多数答案都过时了,我将尝试更新Django 2.2
这里帖子-你的应用程序(帖子,博客,商店等)
1)从模型链接: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()
也会得到一些关系,例如:你不能在视图中显示。
以我为例:
Organisation._meta.fields
(<django.db.models.fields.AutoField: id>, <django.db.models.fields.DateField: created>...
and
Organisation._meta.get_fields()
(<ManyToOneRel: crm.activity>, <django.db.models.fields.AutoField: id>, <django.db.models.fields.DateField: created>...
2)事例
from posts.model import BlogPost
bp = BlogPost()
all_fields = bp._meta.fields
3)父母模式
假设我们将Post作为父模型,并且希望在列表中查看所有字段,并且在Edit模式中将父字段设置为只读。
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