如果Django不支持吗?
我从Django文档中读到:
Django目前不提供对外键的支持 跨多个数据库的多对多关系。
所以我有两个数据库 DB_1和DB_2
DB_1: 所有插入和更新都将转到默认数据库(DB_1)。
DB_2(read_only): 所有读取的查询都将转到DB_2数据库
我有这堂课:
class Task(models.Model):
person = models.OneToOneField(Person)
start_date = models.DateField(null=True)
end_date = models.DateField(null=True)
free_day = models.DateField(null=True)
text = models.CharField(max_length=100)
def __str__(self):
return '%s' % self.person
我正在尝试使用shell创建对象
p = Person.objects.get(username='Herehere')
t = Task(person=p,text='blabla')
t.save()
但我收到了这个错误:
AttributeError: 'DatabaseWrapper' object has no attribute 'Database'
如果我改变
person = models.OneToOneField(Person)
到
person = models.OneToOneField(Person, primary_key)
我得到了
'DatabaseWrapper' object has no attribute 'operators'
我的settings.py数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'ldap': {
'ENGINE': 'ldapdb.backends.ldap',
'NAME': AUTH_LDAP_SERVER_URI,
'USER': AUTH_LDAP_BIND_DN,
'PASSWORD': AUTH_LDAP_BIND_PASSWORD,
},
}
DATABASE_ROUTERS = ['ldapdb.router.Router']