django bulk_create support post_save signal

django 默认 bulk_create 不支持 signal,可以通过自定义 models.Manager 支持这个特性

1
2
3
4
5
6
7
8
9
10
class CustomManager(models.Manager):  
def bulk_create(self, items, **kwargs):
for i in items:
post_save.send(i.__class__, instance=i, created=True)
return super().bulk_create(items, **kwargs)

def bulk_update(self, items, fields, **kwargs):
super().bulk_update(items, fields, **kwargs)
for i in items:
post_save.send(i.__class__, instance=i, created=False)

使用实例:

1
2
3
class Test(db.models):
objects = CustomManager()
...