Поскольку большинство ответов устарели, я постараюсь обновить вас в Django 2.2.
Здесь posts- ваше приложение (записи, блог, магазин и т. Д.)
1) Из ссылки на модель : https://docs.djangoproject.com/en/2.2/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>...
и
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 в качестве родительской модели, и вы хотите видеть все поля в списке, а родительские поля должны быть доступны только для чтения в режиме редактирования.
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