2010-06-09 12 views
8

मेरे मॉडल से अनोखा कई करने वाली कई रिकॉर्ड की सूची प्राप्त करें:एक क्वेरीसमूह

class Order(models.Model): 
    ordered_by = models.ForeignKey(User) 
    reasons = models.ManyToManyField(Reason) 
class Reason(models.Model): 
    description = models.CharField() 

मूल रूप से एक उपयोगकर्ता एक आदेश बनाता है और उस आदेश के लिए कारणों देता है। यानी, जॉन के पास दो ऑर्डर हैं (एक पेंसिल के लिए क्योंकि वह बाहर है और क्योंकि वह अपने वर्तमान स्टॉक को पसंद नहीं करता है। पेन के लिए दूसरा ऑर्डर क्योंकि वह बाहर है)।

मैं उपयोगकर्ता द्वारा अपने आदेश दिए गए सभी कारणों से एक सूची मुद्रित करना चाहता हूं। तो जॉन के तहत, इसे "वह बाहर है" प्रिंट करना चाहिए, "वह अपने वर्तमान स्टॉक को पसंद नहीं करता"; केवल उन दो पंक्तियों। यदि मैं बस जॉन के सभी ऑर्डर का चयन करता हूं, तो उनके माध्यम से पुन: प्रयास करें और अपने "कारणों" को प्रिंट करें, यह प्रिंट करेगा "वह बाहर है", "वह अपने वर्तमान स्टॉक को पसंद नहीं करता" और फिर वह फिर से बाहर निकलता है। मैं इन डुप्लिकेट मान नहीं चाहता हूं।

मैं अपने सभी आदेशों के कारणों की एक सूची कैसे चुनूं ताकि सूची में सभी अद्वितीय पंक्तियां हों?

उत्तर

12
Reason.objects.filter(order__ordered_by=john).distinct() 
संबंधित मुद्दे