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)ただし、作成されたすべてのオブジェクトを呼び出す必要があります。

post_saveバルク作成を使用すると、PKがシグナルに必ずしも利用可能であるとは限らないため、これが機能しないことを意味するため、私はそれを行うことができないようです....

@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 の結果を保存しようとしていますが、send は None を返します。代わりに、各オブジェクトで順番に send を呼び出してから、すべてのオブジェクトを bulk_create に送信する必要があります。

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