1. ホーム
  2. python

Django がアプリケーションのモデル一覧を取得する

2023-09-17 02:30:57

質問

MyAppフォルダにmodels.pyがあります。

from django.db import models
class Model_One(models.Model):
    ...
class Model_Two(models.Model):
    ...
...

10~15クラス程度になります。 どのようにMyAppのすべてのモデルを見つけ、それらの名前を取得するのですか?

モデルは反復可能ではないので、これが可能かどうかさえわかりません。

どのように解決するのですか?

Django 1.7 以降では、例えば admin.py でこのコードを使って、すべてのモデルを登録することができます。

from django.apps import apps
from django.contrib import admin
from django.contrib.admin.sites import AlreadyRegistered

app_models = apps.get_app_config('my_app').get_models()
for model in app_models:
    try:
        admin.site.register(model)
    except AlreadyRegistered:
        pass