参考以下bulk_create
查询:
objs = [
Message(
recipient_number=e.mobile,
content=content,
sender=e.contact_owner,
billee=user,
sender_name=sender,
gateway=gateway,
)
for e in query
]
# Send messages to DB
Message.objects.bulk_create(objs)
我的问题:
我必须使用bulk_create(出于性能原因)。但是我需要在创建的每个对象上调用instance.send(gateway)
。
使用批量创建我似乎无法做到这一点,因为PK不一定适用于post_save
信号意味着这不起作用 ....
@receiver(post_save, sender=Message)
def my_post_save_handler(sender, instance, **kwargs):
instance.send(instance.gateway)
post_save.connect(my_post_save_handler, sender=Message)
所以我尝试了其他一些这样的事情......
objs = [
Message(
etc...
).send(gateway)
for e in query
]
再次这不起作用。
这个问题让我有点生气,这很简单,所以我有什么选择?
我不会使用create,因为我要插入数百万个对象,所以不得不继续使用bulk_create!
谢谢。 :)
答案 0 :(得分:1)
您正在尝试保存发送结果,但发送返回无。相反,你应该依次调用每个对象中的send,然后将所有对象发送到bulk_create:
for obj in objs:
obj.send(gateway)
Message.objects.bulk_create(objs)