0

参考以下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!

谢谢你。:)

4

1 回答 1

1

您正在尝试保存发送的结果,但发送返回无。相反,您应该依次在每个对象中调用 send,然后将所有对象发送到 bulk_create:

for obj in objs:
    obj.send(gateway)
Message.objects.bulk_create(objs)
于 2013-08-24T20:24:49.190 回答