如何覆盖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?如何?
bulk_create
是在Manager
类的方法,以及SomeModel.objects
是Manager
的一个实例。你需要有继承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文档的详细信息。