2015-09-27 87 views
2

如何覆盖bulk_create方法?我试试这个Django override 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?如何?

回答

5

bulk_createManager类中的方法,而SomeModel.objectsManager的实例。你需要继承Manager和覆盖的方法有,那么管理者添加到SomeModel

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

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

有关更多信息,请参见custom managers的文档。