2010-06-18 11 views
15

मुझे संक्षिप्त उत्तर पता है क्योंकि मैंने कोशिश की थी। हालांकि इसे पूरा करने का कोई तरीका है (भले ही केवल एक हैक के कारण)?Django - क्या आप संपत्ति को एकत्रीकरण समारोह में फ़ील्ड के रूप में उपयोग कर सकते हैं?

class Ticket(models.Model): 
    account = modelfields.AccountField() 
    uuid = models.CharField(max_length=36, unique=True) 
    created = models.DateTimeField(auto_now_add=True) 

    class Meta: 
     ordering = ['created'] 

    @property 
    def repair_cost(self): 
     # cost is a @property of LineItem(models.Model) 
     return self.lineitem_set.aggregate(models.Sum('cost')) 
+0

आपको वास्तव में LineItem मॉडल भी दिखाना होगा। –

उत्तर

17

नहीं। अंतर्निहित प्रबंधक के माध्यम से जो कुछ भी जाता है वह वास्तविक क्षेत्र होना चाहिए, क्योंकि वे केवल डेटाबेस को स्पर्श करते हैं। किसी संपत्ति के साथ काम करने के लिए उन्हें टेबल में प्रत्येक रिकॉर्ड को मॉडल में बदलना होगा, फिर पाइथन में उनके माध्यम से फ़िल्टर करना होगा।

+0

धन्यवाद। मुझे लगा कि वो मामला हो सकता है। मैंने चित्रित किया 'सभी लाइनिटैम्स प्राप्त करें और फिर उनकी लागत संपत्ति को कॉल करें' लेकिन यह इतना महंगा होगा :( – orokusaki

3

मेरे पास एक समान परिदृश्य है और वास्तव में वही सुविधा चाहिए। मैंने इसे निम्नलिखित पंक्ति के साथ हल किया:

... 
return sum(lt.cost for lt in self.lineitem_set) 
संबंधित मुद्दे

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