我想在Django上编写一个多表应用程序,所以我创建了两个数据库,其中一个默认使用,其他 - " map" 按特定方式使用app - " map" 。
地图/ models.py:
from django.db import models class MapRouter(object): def db_for_read(self, model, **hints): if model._meta.app_label == 'map': return 'map' return None def db_for_write(self, model, **hints): if model._meta.app_label == 'map': return 'map' return None def allow_relation(self, obj1, obj2, **hints): if obj1._meta.app_label == 'map' or \ obj2._meta.app_label == 'map': return True return None def allow_migrate(self, db, model): if db == 'map': return model._meta.app_label == 'map' elif model._meta.app_label == 'map': return False return None
settings.py:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'eventmap', 'USER': 'eventmap', 'PASSWORD': 'eventmap', 'HOST': 'localhost', 'PORT': '', }, 'map': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'map', 'USER': 'eventmap', 'PASSWORD': 'eventmap', 'HOST': 'localhost', 'PORT': '', } } DATABASE_ROUTERS = ['map.MapRouter']
问题是,当我运行 python manage.py syncdb
时,它说:
django.core.exceptions.ImproperlyConfigured:Module" map"没有定义一个" MapRouter"属性/类
它有什么问题?
答案 0 :(得分:3)
您需要在设置中填写路由器的完整路径。
DATABASE_ROUTERS = ['map.models.MapRouter']