Пример функции Django bulk_create

Я пытаюсь понять bulk_create в Django

Это был мой первоначальный запрос, который я пытаюсь преобразовать:

for e in q:
    msg = Message.objects.create(
        recipient_number=e.mobile,
        content=batch.content,
        sender=e.contact_owner,
        billee=batch.user,
        sender_name=batch.sender_name
    )

Означает ли это, что выполнение следующего (ниже) цикла будет выполняться и создавать все записи сначала, а затем попадать в базу данных? Правильно ли это?

msg = Message.objects.bulk_create({
    Message (
        recipient_number=e.mobile,
        content=batch.content,
        sender=e.contact_owner,
        billee=batch.user,
        sender_name=batch.sender_name
    ),
})

Ответы

Ответ 1

Второй код в вопросе создает один объект, потому что он передает набор с объектом Message.

Чтобы создать несколько объектов, передайте несколько объектов Message в файл bulk_create. Например:

objs = [
    Message(
        recipient_number=e.mobile,
        content=batch.content,
        sender=e.contact_owner,
        billee=batch.user,
        sender_name=batch.sender_name
    )
    for e in q
]
msg = Message.objects.bulk_create(objs)