簡體   English   中英

Django bulk_create 函數示例

[英]Django bulk_create function example

我正在嘗試了解 Django 中的 bulk_create

這是我試圖轉換的原始查詢:

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
    ),
})

問題中的第二個代碼創建單個對象,因為它傳遞了一個帶有 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)

官方示例:

class Entry(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateField()
    mod_date = models.DateField()

現在,批量創建

Entry.objects.bulk_create([
        Entry(headline='This is a test'),
        Entry(headline='This is only a test'),
 ])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM