2010-10-28 14 views
24

मैं एक प्रश्न है ...विशिष्ट वस्तुओं पर एनोटेशन कैसे जोड़ें?

packages = Package.objects.annotate(bid_count=Count('items__bids')) 

कौन सा माना जाता है मुझे बोलियां एक की संख्या के साथ संकुल की एक सूची देने के लिए। पैकेज में केवल एक ही वस्तु है, तो यह बहुत अच्छा काम करता है, लेकिन अगर यह और अधिक गिना जाता है।

प्रत्येक पैकेज में 1 या अधिक आइटम होते हैं। प्रत्येक बोली पैकेज के भीतर 1 या अधिक वस्तुओं पर रखी जाती है। मैं उस पैकेज के भीतर वस्तुओं पर रखी गई बोलियों की संख्या को पुनः प्राप्त करना चाहता हूं।

अगर वहाँ 1 बोली एक पैकेज के भीतर 2 आइटम पर रख दिया गया है, वर्तमान में यह 2 के रूप में गणना की जाएगी, मैं इसे वापस करना चाहते 1.

मैं Count('items__bids__distinct') कोशिश की, लेकिन बात नहीं बनी। मैं यह कैसे कर सकता हूँ?

+0

संभावित डुप्लिकेट (http://stackoverflow.com/questions/13145254/django- एनोटेट-गिनती-एक-विशिष्ट-फ़ील्ड) –

उत्तर

72

मैं एक ही समस्या थी और मैं संकल्प मिली: http://www.djangofoo.com/182/filter-annotate-count

packages = Package.objects.annotate(bid_count=Count('items__bids', distinct = True)) 
की [Django एक अलग क्षेत्र के साथ गिनती व्याख्या]
+5

एक 'विशिष्ट' तर्क है ?! मैं लंबे समय से भूल गया हूं कि मैं इस सवाल के साथ क्या करने की कोशिश कर रहा था, मुझे लगता है कि परियोजना को त्याग दिया गया है ... लेकिन अगर यह फिर से आता है! यह आसान होगा। धन्यवाद! – mpen

+8

मेरी इच्छा है कि मैं आपको +1000 अंक दे सकता हूं। आईआरसी पर किसी को भी इस सवाल का जवाब देने का कोई संकेत नहीं था, ये क्वॉर्ड्स पूरी तरह से अनियंत्रित प्रतीत होते हैं और वे मौजूद होने का एकमात्र तरीका स्रोत कोड से हैं। – John

+0

मैंने इस पर विभिन्न संभावित समाधानों का प्रयास करने में एक घंटे बिताए! मैंने 'django.db.models.aggregates.py' में कुल परिभाषा की जांच की और हस्ताक्षर '__init __ (स्वयं, लुकअप, ** अतिरिक्त)' देखा, लेकिन तब मुझे अतिरिक्त तर्क नामों का उपयोग करने के तरीके पर कोई दस्तावेज़ नहीं मिला , और निश्चित रूप से यह जवाब है! यह दस्तावेज क्यों नहीं है !? – AJJ

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