模块没有定义属性/类

adj*_*tts 2 python database django django-settings

我想在 Django 上编写一个多表应用程序,所以我创建了两个数据库,其中一个默认使用,另一个 - "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
Run Code Online (Sandbox Code Playgroud)

设置.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']
Run Code Online (Sandbox Code Playgroud)

问题是当我运行python manage.py syncdb它时说:

django.core.exceptions.ImproperlyConfigured:模块“map”没有定义“MapRouter”属性/类

它出什么问题了?

Dan*_*man 5

您需要在设置中输入路由器的完整路径。

DATABASE_ROUTERS = ['map.models.MapRouter']
Run Code Online (Sandbox Code Playgroud)