Автоматический импорт всех таблиц БД в оболочке manage.py - PullRequest
3 голосов
/ 31 августа 2011

Есть ли фрагмент или простой способ импортировать все мои таблицы django при вводе приглашения?

Например, обычно мои команды идут примерно так:

>>> from userprofile.models import Table
>>> Table.objects...

Таким образом, как только я ввел приглашение, я уже импортировал таблицы.Спасибо.

Ответы [ 3 ]

7 голосов
/ 31 августа 2011

django-extensions добавляет команду shell_plus для manage.py, которая делает именно это.

1 голос
/ 31 августа 2011
from django.db.models import get_models
for _class in get_models():
    globals()[_class.__name__] = _class

Здесь вы получаете все установленные модели, доступные по всему миру, ссылаясь на них со своим именем класса.Прочтите документы для django.db.models.get_models для получения дополнительной информации:

Определение: get_models (self, app_mod = None, include_auto_created = False, include_deferred = False) Строка документации: для модуля, содержащего модели, возвращается списокмодели.В противном случае возвращает список всех установленных моделей.

По умолчанию автоматически созданные модели (т. Е. Модели m2m без явной промежуточной таблицы) не включаются.Однако, если вы укажете include_auto_created = True, они будут.

По умолчанию модели, созданные для удовлетворения отложенных запросов атрибутов, не включены в список моделей.Однако, если вы укажете include_deferred, они будут.

0 голосов
/ 31 августа 2011

Вы можете сделать это:

>>> from django.conf import settings
>>> for app in settings.INSTALLED_APPS:
...   module = __import__(app)
...   globals()[module.__name__] = module
...

Вы получите полностью квалифицированные имена; userprofile.models.Table вместо Table.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...