2013-09-21 6 views
10

मैं अपने प्रश्नों को अनुकूलित करने की कोशिश कर रहा हूं लेकिन prefetch_related टेबल में शामिल होने और सभी फ़ील्ड का चयन करने पर जोर देता है भले ही मुझे केवल संबंध तालिका से आईडी की सूची चाहिए।django prefetch_related id केवल

queries

आप 4 क्वेरी अनदेखा कर सकते हैं। यह सवाल से संबंधित नहीं है।

संबंधित कोड:

class Contact(models.Model): 
    ... 
    Groups = models.ManyToManyField(ContactGroup, related_name='contacts') 
    ... 

queryset = Contact.objects.all().prefetch_related('Groups') 

उत्तर

14

Django 1.7 Prefetch objects जो आप जब प्रीफ़ेचिंग इस्तेमाल किया क्वेरीसमूह कस्टमाइज़ कर सकते हैं जोड़ा। इस मामले में, आपको कुछ चाहिए:

queryset = Contact.objects.all().prefetch_related(
    Prefetch('Groups', queryset=Group.objects.all().only('id'))) 
+1

lol, अच्छी तरह से खेला। यहाँ, अपनी कुकी है। :) – demux

+1

पोस्टग्रेस के साथ Django 1.11 में, मुझे अतिरिक्त रूप से पूर्व निर्धारित वस्तु की विदेशी कुंजी का चयन करने की आवश्यकता थी - अन्यथा Django विदेशी कुंजी का चयन करने के लिए प्रत्येक prefetched ऑब्जेक्ट के लिए एक डीबी लुकअप कर रहा था (जो कि किसी भी prefetch से भी बदतर है)। इस उदाहरण में, संशोधन होगा: 'queryset = group.objects.all()। केवल ('id', 'contact_id'))' – erikreed

+0

बहुत दुखी है कि यह सामग्री प्रकारों के साथ काम नहीं कर रहा है – valignatev

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