2015-09-27 61 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的文檔。