django - Reducing queries overhead when fetching related fields -


मेरे पास टैग के साथ एक सरल ब्लॉग ऐप है।

  वर्ग AbstractDate (models.Model) : निर्मित = मॉडल.डेटाइमफिल्ड (auto_now_add = true) वर्ग मेटा: सार = सच वर्ग abstractTitleData (AbstractDate): title = models.CharField (max_length = 200) वर्ग मेटा: abstract = True class Post (AbstractTitleData): body = models.TextField () = मॉडल .इंटरफेरफिल्ड (डिफ़ॉल्ट = 0) पसंद = मॉडल.इटेगरफिल्ड (डिफ़ॉल्ट = 0) तस्वीर = मॉडल। आईजेफ़ेल्ड (अपलोड_to = 'प्रोफाइल_इम्स', रिक्त = सत्य) वर्ग मेटा: ऑर्डरिंग = ["-कितचित"] def __unicode __ (स्व): रिटर्न स्व टाइटेल क्लास टैग (मॉडल। मॉडेल): स्लग = मॉडल। स्लगफिल्ड (अधिकतम_लांबी = 15) पोस्ट = मॉडल। फ़िरनाइक (पोस्ट, संबंधित_नाम = "टैग") def __unicode __ (स्वयं): रिटर्न स्व स्लग   

उदाहरण के लिए, मेरे डीबी में दो पोस्ट हैं। क्रमशः 'ए', 'बी', 'सी' और 'डी', 'ई', 'एफ' के साथ पोस्ट ए और पोस्ट बी हैं। डेटाबेस को क्वेरी को कम करने के लिए, मैं विधि का उपयोग करने की कोशिश कर रहा हूं।

  condition = 'blog_post.id = blog_tag.post_id' p = Post.objects.all ()। अतिरिक्त (चयन करें = परिणाम:  
  ['टी' & Lt; पोस्ट: ए & gt ;, & lt; डाक: ए & gt ;, & lt; डाक: ए & gt ;, & lt; डाक: बी & gt ;, & lt; डाक: बी & gt ;, & lt; पोस्ट: बी & gt; टी ए ए बी बी सी सी डी डी एफ एफ कोड   

मैं कैसे एक पोस्ट में अपने सभी टैग के साथ एक पोस्ट की एक कॉपी प्राप्त कर सकता हूं :

पोस्ट में पोस्ट के लिए:

  p = [[lt; पोस्ट: ए & gt ;, & lt; पोस्ट: बी & gt;] प्रिंट post.t ['a', 'b', 'c'] ['डी', 'ई', 'एफ']    

आप ऐसा नहीं करेंगे इसके लिए अतिरिक्त का उपयोग करें इसके बजाय, दो प्रश्नों में पदों और उनके सभी संबद्ध टैगों को लाने के लिए prefetch_related का उपयोग करें:

  p = Post.objects.all ()। Prefetch_related ('tag')    

Comments

Popular posts from this blog

Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel -

multithreading - PhantomJS-Node in a for Loop -

c++ - MATLAB .m file to .mex file using Matlab Compiler -