Django的覆盖bulk_create

问题描述 投票:4回答:1

如何覆盖bulk_create方法?我试试这个

class SomeModel(models.Model):
    field = models.CharField()

    def bulk_create(self, objs, batch_size=None):
        #do something
        return super(SomeModel, self).bulk_create(objs, batch_size)

但是,这是行不通的。当我运行这段代码

SomeModel.objects.bulk_create(objects_list)

这是创建新的对象,但它不使用我重写bulk_create方法。是否有可能重写bulk_create?如何?

python django django-models
1个回答
8
投票

bulk_create是在Manager类的方法,以及SomeModel.objectsManager的一个实例。你需要有继承Manager和覆盖的方法,然后添加经理SomeModel

class SomeModelManager(models.Manager):
    def bulk_create(self, objs, batch_size=None, ignore_conflicts=False):
        ...

class SomeModel(models.Model):
    objects = SomeModelManager()

查看custom managers文档的详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.