Alg*_*ra8 5 python django django-models
我正在编写自定义 Django 迁移脚本。根据关于自定义迁移的django 文档,我应该能够使用我的模型 vis-a-vis apps.get_model()。但是,在尝试执行此操作时,出现以下错误:
AttributeError: type object 'MyModel' has no attribute 'objects'
Run Code Online (Sandbox Code Playgroud)
我认为这与应用程序注册表尚未准备好有关,但我不确定。
示例代码:
def do_thing(apps, schema_editor):
my_model = apps.get_model('app', 'MyModel')
objects_ = my_model.objects.filter(
some_field__isnull=True).prefetch_related(
'some_field__some_other_field') # exc raised here
class Migration(migrations.Migration):
atomic = False
dependencies = [
('app', '00xx_auto_xxx')
]
operations = [
migrations.RunPython(do_thing),
]
Run Code Online (Sandbox Code Playgroud)
apps.get_model()的返回值的简单打印语句显示如下:
<class '__fake__.MyModel'>。我不确定这是什么,是否是没有准备好的结果。
编辑:
我找不到任何资源来解释为什么我得到一个__fake__对象,所以我决定修改代码。我通过抢占appsargs使其工作,如下所示:
def do_thing(apps, schema_editor):
from django.apps import apps
my_model = apps.get_model('app', 'MyModel')
objects_ = my_model.objects.filter(
some_field__isnull=True).prefetch_related(
'some_field__some_other_field') # no more exc raised here
Run Code Online (Sandbox Code Playgroud)
我仍然感到困惑,任何帮助将不胜感激。
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |