1
0
mirror of https://github.com/django/django.git synced 2025-07-05 18:29:11 +00:00

[multi-db] Added workarounds for model-loading to allow in-module models to appear in get_models().

git-svn-id: http://code.djangoproject.com/svn/django/branches/multiple-db-support@3384 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jason Pellerin 2006-07-19 18:10:19 +00:00
parent 72b4c4c14a
commit 439b814afc

View File

@ -54,14 +54,21 @@ Set([<class 'othertests.ansi_sql.Car'>])
[BoundStatement('DROP TABLE "ansi_sql_mod";')]
>>> builder.get_drop_table(Car)
[BoundStatement('DROP TABLE "ansi_sql_car";')]
>>> builder.get_drop_table(Car, cascade=True)
[BoundStatement('DROP TABLE "ansi_sql_car";')]
# drop with cascade
>>> builder.tables = ['ansi_sql_car', 'ansi_sql_mod', 'ansi_sql_collector']
>>> Mod._default_manager.db.backend.supports_constraints = False
>>> Mod._default_manager.db.backend.supports_constraints
False
>>> Car._default_manager.db.backend.supports_constraints
False
>>> builder.get_drop_table(Car, cascade=True)
[BoundStatement('DROP TABLE "ansi_sql_car";')]
>>> Mod._default_manager.db.backend.supports_constraints = True
>>> Mod._default_manager.db.backend.supports_constraints
True
>>> Car._default_manager.db.backend.supports_constraints
True
>>> builder.get_drop_table(Car, cascade=True)
[BoundStatement('ALTER TABLE "ansi_sql_mod" ...'), BoundStatement('DROP TABLE "ansi_sql_car";')]
>>> builder.get_drop_table(Collector)
@ -72,8 +79,12 @@ Set([<class 'othertests.ansi_sql.Car'>])
"""
import os
from django.db import models
import sys
from django.conf import settings
from django.core.management import install
from django.db import models
from django.db.models import loading
# For Python 2.3
if not hasattr(__builtins__, 'set'):
@ -121,7 +132,16 @@ def othertests_sql(mod):
return os.path.normpath(os.path.join(os.path.dirname(__file__), 'sql'))
# install my stuff
# install my models and force myself into the registry of apps and models
# (without this, references and such to/from the models installed here
# won't be picked up in get_models(), since get_models() looks only at
# models from apps in INSTALLED_APPS, and the model and app lookup rules
# enforce a module structure that this test file can't follow)
Car.objects.install()
Collector.objects.install()
Mod.objects.install()
loading.get_apps()
loading._app_list.append(sys.modules[__name__])
# model lookup only works for pk.models, so fake up my module name
__name__ = 'othertests.ansi_sql.models'