एक ही कक्षा के दो प्रश्नोत्तरी वस्तुओं पर विचार करें। क्या यूनियन की गणना करके उन्हें एक प्रश्नोत्तरी में एकीकृत करने का कोई आसान तरीका है? इसके अलावा, क्या उन्हें घटाने का एक आसान तरीका है? सेट में से किसी एक सेट में दिखाई देने वाले सभी तत्वों को हटा रहा है?QuerySet संघ और django में घटाव के लिए सरल तरीका?
उत्तर
मुझे ऑपरेशन के लिए लगता है क्योंकि आपको उन्हें evalute करने की आवश्यकता है। तो आप उन पर list()
पर कॉल कर सकते हैं और सामान्य पायथन सूची संचालन के साथ उन पर काम कर सकते हैं!
आप Q
object का उपयोग कर सकते हैं।
वाक्य रचना कुछ इस तरह हो सकता है:
added_query_set = YourModel.objects.\
filter(Q(id__in=old_query_set_1)|Q(id__in=old_query_set_2))
आप शायद अपने वास्तविक जरूरतों के आधार पर अनुकूलित कर सकते हैं और के डाटाबेस नीचे हिट (अभी यह 3 है) राशि प्राप्त है, लेकिन यह आपके लिए प्रारंभ करने चाहिए।
+1 इसे क्वेरीसेट के साथ अच्छी तरह से करने के लिए +1 है, लेकिन मुझे लगता है कि यह सूची जोड़ने से एक बार डीबी को भी मार रहा है! मुझे लगता है कि आप जिस विधि को पसंद करते हैं उस पर निर्भर करता है कि क्या आप एक अपरिचित क्यू या कम डीबी हिट चाहते हैं! –
दो मूल 'क्वेरीज़सेट' के वास्तविक मानकों को देखते हुए आप उन मानकों को 'क्यू' ऑब्जेक्ट्स में शामिल करने में सक्षम होना चाहिए और एक डीबी हिट – Zach
django's documentation करने के लिए वापस जा रहे हैं, तो आप कर सकते हैं:
new_query_set = query_set_1 | query_set_2
यह एक तार्किक रूप में काम करता है या जो वास्तव में डुप्लिकेट के बिना है। यह अतिरिक्त पहलू का जवाब देता है और AFAIK सभी पर डीबी को हिट नहीं करता है!
new_query_set = query_set_1 & query_set_2
यह तार्किक और काम करता है।
अभी भी क्वेरीज़ को घटाने का तरीका गायब है। मेरे लिए यह विश्वास करना मुश्किल है कि इसे समुदाय द्वारा सुंदरता से निपटाया नहीं गया है ...
उसी मॉडल का उपयोग करके किसी अन्य क्वेरीसेट से क्वेरीरीट घटाएं।
यह काम करता है - लेकिन शायद धीरे-धीरे
queryset_with_hello = Blog.objects.filter(name__icontains='hello')
queryset_without_hello = Blog.objects.exclude(pk__in=queryset_with_hello)
है पढ़ें Django दस्तावेज में प्रदर्शन विचार:
https://docs.djangoproject.com/en/dev/ref/models/querysets/#in
यह केवल क्वेरीसेट्स के निर्माण के दौरान काम करता है, प्रश्न ** मौजूदा ** क्वेरीसेट्स के बारे में है। जब कोई पहले से ही क्वेरीसेट के रूप में मौजूद होता है तो qs1- qs2 करने के बारे में कोई कैसे होगा। – Curtwagner1984
मौजूदा क्वेरीसेट को संशोधित करना एक धारणा है जो डीजेंगो में ज्यादा समझ नहीं लेती है। ऐसा करें: 'q = Blog.objects.filter (pk__in = q1)। Exclude (pk__in = q2)' – DylanYoung
Django 1.11 के बाद से, क्वेरीसमूहों union()
, intersection()
and difference()
methods.
है यह करने के लिए भी संभव है QuerySets के साथ |
and &
operators का उपयोग करें (मुझे वें में इसका संदर्भ नहीं मिला ई डॉक्स, तो मुझे लगता है कि union()
और intersection()
दो क्वेरीसेट को गठबंधन करने का पसंदीदा तरीका है।
qs3 = qs1.union(qs2) # or qs3 = qs1 | qs2
qs3 = qs1.intersection(qs2) # or qs3 = qs1 & qs2
qs3 = qs1.difference(qs2) # the^operator is not implemented.
तुम भी Q()
objects उपयोग कर सकते हैं जो क्वेरीसमूहों तरह |
और &
, और इसके अलावा उलट लागू ऑपरेटर ~
- 1. Django आलसी QuerySet और पेजिनेशन
- 2. मॉडल में Django Queryset?
- 3. Django में संघ और छेड़छाड़
- 4. एक Django QuerySet
- 5. django queryset - firstname और lastname के लिए खोज
- 6. एक django-haystack queryset serialize
- 7. संबंधित मॉडल की Django Queryset, मूल मॉडल
- 8. Django एक QuerySet ऑब्जेक्ट पर सहेजने के लिए कॉलिंग - 'QuerySet' ऑब्जेक्ट में कोई विशेषता नहीं है 'सहेजें'
- 9. फ़िल्टर Django Haystack QuerySet जैसे परिणाम?
- 10. Django QuerySet के साथ भागों में डेटाबेस को संसाधित करने का सबसे अच्छा तरीका?
- 11. एक Django QuerySet से SQL प्राप्त करना
- 12. संघ या संघ के लिए, यह प्रश्न
- 13. नियो 4 जे के लिए सरल ट्यूटोरियल और django + python
- 14. django व्यवस्थापक में changelist_view में queryset को फ़िल्टर करने के लिए कैसे?
- 15. पावरशेल में संघ और छेड़छाड़?
- 16. "संघ और खोज" के लिए रिवर्स ऑपरेशन
- 17. सोने के लिए सरल, गैर-अवरुद्ध तरीका?
- 18. जावा में दिनांकों का जोड़ और घटाव
- 19. Currying घटाव
- 20. बहुभुज के बहुसंख्यक और संघ
- 21. ओवरफ्लो के बिना घटाव?
- 22. रेल संघ और फॉर्म
- 23. जावा में एक आवृत्ति खेलने के लिए सरल तरीका?
- 24. Django Boolean Queryset फ़िल्टर काम नहीं कर रहा
- 25. कई विदेशी कुंजियों पर Django M2M QuerySet फ़िल्टरिंग
- 26. एक DOMSource को स्ट्रीमसोर्स में बदलने के लिए सरल तरीका?
- 27. डबल घटाव सटीक मुद्दा
- 28. NSDecimalNumber घटाव
- 29. मूल घटाव में पायथन त्रुटि?
- 30. रेल सरल फार्म कस्टम संघ का चयन क्षेत्र
हम कैसे आप प्रारंभिक दो क्वेरीसमूहों उत्पन्न के कुछ उदाहरण हो और कर सकते हैं कि वे किस तरह इस्तेमाल कर रहे हैं? अधिक जानकारी के साथ आप जोड़ने/घटाने के बजाय बस अपने मूल क्वेरीसेट को अनुकूलित करने में सक्षम हो सकते हैं? –
qs1 = MyObj1.objects.filter (some_field__gte = value) - दूसरी तरफ qs2 वास्तव में एक निश्चित MyObj2 इंस्टेंस और MyObj1 उदाहरण के बीच एक एम 2 एम संबंध है, मुझे लगा कि मैं क्वेरीसेट्स के बारे में पूछूंगा, क्योंकि मुझे लगता है कि उत्तर होगा myobj2_instance.myobj1 पर भी लागू होता है। – Jonathan