Django覆盖bulk_create

9
如何覆盖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?如何实现?

1个回答

15

bulk_createManager 类上的一个方法,而 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()

有关更多信息,请参阅自定义管理器的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接