如何访问我的模型';Django数据迁移上下文中的自定义管理器?

如何访问我的模型';Django数据迁移上下文中的自定义管理器?,django,django-models,migration,django-managers,Django,Django Models,Migration,Django Managers,我有一个自定义模型管理器用于我的几个模型。此管理器有助于加快数据库插入。我需要执行数据迁移,它涉及到迁移数百万条记录/对象。我需要在数据迁移中使用自定义管理器。有人知道如何得到它吗。在数据迁移上下文中,如果我运行model.objects,这将返回Django的模型管理器。为什么不直接导入您的模型 from myproj.models import MyModel MyModel.objects.filter(field=value).update(field=new_value) 到目前为止

我有一个自定义模型管理器用于我的几个模型。此管理器有助于加快数据库插入。我需要执行数据迁移,它涉及到迁移数百万条记录/对象。我需要在数据迁移中使用自定义管理器。有人知道如何得到它吗。在数据迁移上下文中,如果我运行
model.objects
,这将返回Django的模型管理器。

为什么不直接导入您的模型

from myproj.models import MyModel
MyModel.objects.filter(field=value).update(field=new_value)

到目前为止,我正在使用的方法(似乎工作可靠)是为模型实例化一个本地管理器,然后将管理器的模型属性设置为我感兴趣的模型:

class MyManager(Manager):
    ...
    def my_create_func(self):
        ...

class MyModel(Model):
    ...
    objects = MyManager()

def data_migration(apps, schema_editor):
    model = apps.get_model(...)
    manager = MyManager()
    manager.model = model
    manager.my_create_func()

您还可以使用管理器的
use_in_migrations
属性):


我在Django的迁移文档中找到了AlterModelManager。但如何使用它还不清楚。我在网上也找不到任何示例。在数据迁移上下文中,您不能像您建议的那样对导入的模型运行查询。您必须使用传入的应用程序注册表参数获取模型类:def data_migration(apps,schema_editor):model=apps.get_model('myApp','myModel'))
class MyManager(models.Manager):
    use_in_migrations = True

class MyModel(models.Model):
    objects = MyManager()