Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么django';s`apps.get\u model()`返回一个`\u伪`.MyModel`对象_Python_Django_Django Models - Fatal编程技术网

Python 为什么django';s`apps.get\u model()`返回一个`\u伪`.MyModel`对象

Python 为什么django';s`apps.get\u model()`返回一个`\u伪`.MyModel`对象,python,django,django-models,Python,Django,Django Models,我正在编写一个定制的Django迁移脚本。根据,我应该能够使用我的model vis-a-vis应用程序。get_model()。但是,尝试执行此操作时,我会出现以下错误: AttributeError: type object 'MyModel' has no attribute 'objects' 我认为这与应用程序注册表没有准备好有关,但我不确定 示例代码: def do_thing(apps, schema_editor): my_model = apps.get_model(

我正在编写一个定制的Django迁移脚本。根据,我应该能够使用我的model vis-a-vis
应用程序。get_model()
。但是,尝试执行此操作时,我会出现以下错误:

AttributeError: type object 'MyModel' has no attribute 'objects'
我认为这与应用程序注册表没有准备好有关,但我不确定

示例代码:

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),
    ]
apps.get_model()
返回值的简单打印语句如下所示:
。我不确定这是什么,也不确定这是不是因为没有准备好

编辑:

我找不到任何资源来解释为什么我得到了一个
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我通过抢占args中的
应用程序
使其工作,如下所示:

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
我仍然困惑不解,如果有任何帮助,我将不胜感激。

这些假物体是历史模型。以下是来自以下方面的解释:

当您运行迁移时,Django正在使用迁移文件中存储的模型的历史版本

[……]

因为不可能序列化任意Python代码,所以这些历史模型将没有您定义的任何自定义方法。但是,它们将具有相同的字段、关系、管理器(仅限于那些具有
use_in_migrations=True
)和元选项(也有版本,因此它们可能与当前的不同)

如果
objects
是一个自定义管理器,则可以设置
use\u In\u migrations=True
以使其在迁移中可用