我想在 Django 上编写一个多表应用程序,因此我创建了两个数据库,其中一个默认使用,另一个 - “map” 由特定应用程序使用 - “ map ”。
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.pysyncdb
时,它显示:
django.core.exceptions.ImproperlyConfigured: Module "map" does not define a "MapRouter" attribute/class
这是怎么回事?
最佳答案
您需要在设置中输入路由器的完整路径。
DATABASE_ROUTERS = ['map.models.MapRouter']
关于python - 模块未定义属性/类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25937712/