Comme la plupart des réponses sont obsolètes, j'essaierai de vous mettre à jour sur Django 2.2
Voici les articles - votre application (articles, blog, boutique, etc.)
1) Depuis le lien du modèle : 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()
Notez que:
all_fields=BlogPost._meta.get_fields()
Obtiendra également quelques relations, qui, par exemple: vous ne pouvez pas afficher dans une vue.
Comme dans mon cas:
Organisation._meta.fields
(<django.db.models.fields.AutoField: id>, <django.db.models.fields.DateField: created>...
et
Organisation._meta.get_fields()
(<ManyToOneRel: crm.activity>, <django.db.models.fields.AutoField: id>, <django.db.models.fields.DateField: created>...
2) De l'instance
from posts.model import BlogPost
bp = BlogPost()
all_fields = bp._meta.fields
3) Du modèle parent
Supposons que nous ayons Post comme modèle parent et que vous souhaitiez voir tous les champs dans une liste et que les champs parents soient en lecture seule en mode Édition.
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