我有一个Django项目,它有2个数据库连接,一个是普通的默认连接,另一个是传统数据库。
其中一个应用程序有这样的迁移:
def remove_dash_from_uuids(apps, schema_editor):
Job = apps.get_model('task_manager', 'Job')
for job in Job.objects.all():
job.uuid = str(job.uuid).replace('-', '')
job.save()
class Migration(migrations.Migration):
dependencies = [
('task_manager', '0003_default_enviroment'),
]
operations = [
migrations.RunPython(remove_dash_from_uuids),
migrations.RemoveField(
model_name='job',
name='next_runs_hash',
),
]
因此,这会运行一些自定义代码,然后删除next_runs_hash
字段。
当我运行单元测试时,它创建了2个测试数据库,一个用于“默认”,一个用于“遗留”,迁移成功应用于“默认”但在“遗留”上失败,说next_runs_hash
列不存在。
我已验证next_runs_hash
数据库中确实存在test_legacy
列。
这表明迁移中的remove_dash_from_uuids
是在default
连接上运行的,该连接应该是legacy
连接的粘性。
所以这是我的问题:
remove_dash_from_uuids
功能坚持连接。legacy
连接创建测试数据库?