gpt4 book ai didi

python - 在迁移文件中使用特定模型时,Django 测试失败

转载 作者:行者123 更新时间:2023-12-03 23:30:03 25 4
gpt4 key购买 nike

我已经为特定的 Django 1.11 应用程序手动创建了一个数据迁移文件:

from __future__ import unicode_literals
from django.db import migrations, models

def set_item_things(apps, schema_editor):
MyModel = apps.get_model('my_app', 'MyModel')
# NOTE: if I remove this line then the tests will work
MyOtherModel = apps.get_model('my_other_app', 'MyOtherModel')

for item in MyModel.objects.all():
# NOTE: if I remove this line then the tests will work
thingy = MyOtherModel.get(example_field=item.color)
item.other_thing = thingy
item.save()

class Migration(migrations.Migration):
dependencies = [
('contracts', '0014_my_previous_migration'),
]

operations = [
migrations.RunPython(set_item_things),
]

当我运行 python manage.py migrate 时,一切都按预期工作。
但是每当我使用 pytest 运行我的测试时,我都会得到这个:
test setup failed
self = <django.db.migrations.state.StateApps object at 0x10714b2b0>
app_label = 'my_other_app'

def get_app_config(self, app_label):
"""
Imports applications and returns an app config for the given label.

Raises LookupError if no application exists with this label.
"""
self.check_apps_ready()
try:
> return self.app_configs[app_label]
E KeyError: 'my_other_app'

所以看起来应用配置没有正确配置,这已经很奇怪了,因为 migrate 命令运行顺利。

无论如何:这是 my_other_app/apps.py 的内容:
from django.apps import AppConfig

class MyOtherAppConfig(AppConfig):
name = 'my_other_app'

并且基本上与位于其他应用程序目录中的所有其他 apps.py 非常相似,当然名称除外。

所以我认为配置应该是正确的,但无论出于何种原因我的测试都无法运行。

唯一的解决方法是从迁移文件中删除对 my_other_app 的任何引用。

我已经尝试将其添加到 my_other_apps/__init__.py :
default_app_config = 'my_other_apps.apps.MyOtherAppConfig'

但没有任何变化。

我已经尝试查看 my_other_apps/models.py 中是否存在循环依赖关系,但似乎并非如此。

我在这里缺少什么?

最佳答案

我从类似的 SO question 找到了解决方案:MyOtherModel 来自不同的应用程序,因此在我的迁移文件中,我必须指定该应用程序最后一次迁移作为附加依赖项,即:

class Migration(migrations.Migration):
dependencies = [
('contracts', '0014_my_previous_migration'),
# THIS extra line solves the problem!
('my_other_app', '002_my_last_migration'),
]

operations = [
migrations.RunPython(set_item_things),
]

关于python - 在迁移文件中使用特定模型时,Django 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49451493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com