2013-08-22 4 views
15

मैं DjangoDjango bulk_create समारोह उदाहरण

में 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 
    ), 
}) 
+2

आप लगभग वहां हैं। लूप में ऑब्जेक्ट्स न बनाएं। बस 'Message.objects.create (...)' के बजाय 'संदेश (...) 'करें - यह डेटाबेस कॉल को ट्रिगर नहीं करेगा। इसे एक सूची में रखें, और उस सूची को 'bulk_create' – karthikr

उत्तर

29

प्रश्न में दूसरा कोड एक ऑब्जेक्ट बनाता है, क्योंकि यह एक संदेश ऑब्जेक्ट के साथ एक सेट पास करता है।

एकाधिक ऑब्जेक्ट्स बनाने के लिए, 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) 
+0

में पास करें यदि मेरे पास लाखों ऑब्जेक्ट हैं? क्या इससे कोई फर्क पड़ता है? – GrantU

+0

यदि आपके पास 1 एमएम ऑब्जेक्ट्स को संभालने के लिए प्रसंस्करण क्षमताएं हैं, तो सुनिश्चित करें कि – karthikr

+0

यह सीपीयू या मेमोरी ब्याज से बाहर है? – GrantU

संबंधित मुद्दे