我只是试图在Django中找到定义数据库模型的解决方案。 比如在我的settings.py中有三个数据库
settings.py
private void CheckIsNumeric(TextCompositionEventArgs e)
{
int result;
string removedSpaces = e.Text.Replace(" ","");
if (!(int.TryParse(removedSpaces, out result)))
{
e.Handled = true;
MessageBox.Show("!!!no content!!!", "Error",
MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
在我的民意调查/ models.py
中DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'db_one': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db_one.sqlite3'),
},
'db_two': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db_two.sqlite3'),
},
}
现在我想在db_one数据库中添加问题模型,在db_two数据库中添加Choice模型,那我该怎么做呢
我尝试使用路由器跟随此multiple databases and multiple models in django 但它只是在我尝试将默认数据库中的空白设置尝试并尝试迁移后才更喜欢默认数据库
或
是在Django中为应用程序明确定义数据库的方法
答案 0 :(得分:0)
您可以使用数据库my using
方法。
例如,从db_one
获取所有数据将如下所示:
all_data = YourModel.objects.using('db_one').all()
答案 1 :(得分:0)
您需要将模型迁移到默认数据库以外的数据库,对吗?
您可以在迁移时选择数据库。
# database name from settings.py
./manage.py migrate --database=<database-name>
如果要在一个数据库中保留一些表,在其他数据库中保留一些表,我建议每个表创建一个迁移。然后,您将能够运行
./manage.py migrate <your-app-name> <migration-number> --database=<database-name>
修改强>
您可以使用--fake
标记跳过在特定数据库中创建特定表。
Choice
。{/ li>中注释掉您的models.py
模型
manage.py makemigrations
=&gt;假设这创建了迁移001
(对于Question
模型)Choice
中取消注释models.py
模型。manage.py makemigrations
。假设这创建了迁移002
(对于Choice
模型)manage.py migrate <app-name> 001 --database=db_one
=&gt;这将在db_one manage.py migrate <app-name> 001 --database=db_two --fake
=&gt;这python manage.py migrate <app-name> 002 --database=db_one --fake
=&GT;这将跳过在db_one python manage.py migrate <app-name> 002 --database=db_two
=&gt;这将在db_two中创建Choice模型。