我有一个用于多个模型的自定义模型管理器。该管理器有助于加快数据库插入速度。我需要执行数据迁移,它涉及迁移数百万个记录/对象。我的数据迁移需要我的自定义管理器。有谁知道如何获得它。在数据迁移上下文中,如果我运行model.objects
,这将带回Django的模型管理器。
答案 0 :(得分:0)
为什么不仅仅导入模型?
from myproj.models import MyModel
MyModel.objects.filter(field=value).update(field=new_value)
答案 1 :(得分:0)
到目前为止,我正在使用的并且似乎可靠地起作用的方法是为模型实例化本地Manager,然后将manager的model属性设置为我感兴趣的模型:
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()
答案 2 :(得分:0)
您还可以使用管理者的use_in_migrations
属性(docs):
class MyManager(models.Manager):
use_in_migrations = True
class MyModel(models.Model):
objects = MyManager()