如何做两个数据库关系(OneToOneField)

时间:2015-06-15 13:49:13

标签: django django-models sqlite django-database

如果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']

0 个答案:

没有答案