में डेटा और जटिल एनोटेशन को पिटोटिंग करना Django में ORM हमें संबंधित डेटा के आधार पर क्वेरीसेट्स को आसानी से एनोटेट (फ़ील्ड जोड़ने) की सुविधा देता है, इसलिए मुझे संबंधित डेटा के विभिन्न फ़िल्टर किए गए सबसेट के लिए एकाधिक एनोटेशन प्राप्त करने का कोई तरीका नहीं मिल रहा है।Django ORM
यह django-helpdesk, ओपन-सोर्स डीजेगो-संचालित परेशानी-टिकट ट्रैकर के संबंध में पूछा जा रहा है। मैं डेटा चार्टिंग और रिपोर्टिंग प्रयोजनों के लिए इस तरह पिवट की आवश्यकता है
इन मॉडलों पर विचार करें:
CHOICE_LIST = (
('open', 'Open'),
('closed', 'Closed'),
)
class Queue(models.model):
name = models.CharField(max_length=40)
class Issue(models.Model):
subject = models.CharField(max_length=40)
queue = models.ForeignKey(Queue)
status = models.CharField(max_length=10, choices=CHOICE_LIST)
और इस डेटासेट:
कतार:
ID | Name
---+------------------------------
1 | Product Information Requests
2 | Service Requests
मुद्दे:
ID | Queue | Status
---+-------+---------
1 | 1 | open
2 | 1 | open
3 | 1 | closed
4 | 2 | open
5 | 2 | closed
6 | 2 | closed
7 | 2 | closed
मैं इस तरह एक एनोटेशन/कुल नज़र देखने के लिए कुछ करना चाहते हैं:
Queue ID | Name | open | closed
---------+-------------------------------+------+--------
1 | Product Information Requests | 2 | 1
2 | Service Requests | 1 | 3
यह मूल रूप से, एक crosstab या पिवट तालिका है एक्सेल भाषा में। मैं वर्तमान में कुछ कस्टम एसक्यूएल प्रश्नों का उपयोग करके इस आउटपुट का निर्माण कर रहा हूं, हालांकि अगर मैं Django ORM का उपयोग करने के लिए स्थानांतरित कर सकता हूं, तो मैं अपने एसक्यूएल में WHERE क्लॉज के डोडी सम्मिलन किए बिना डेटा को गतिशील रूप से फ़िल्टर कर सकता हूं।
"बोनस अंक" के लिए: यह कैसे करेगा जहां पिवोट फ़ील्ड (status
उपरोक्त उदाहरण में) एक तिथि थी, और हम चाहते थे कि कॉलम महीनों/सप्ताह/तिमाहियों/दिन हों?
यदि समस्या तालिका बड़ी है और इसे सामान्य रूप से सामान्य रूप से माना जा सकता है तो यह समाधान खराब हो जाएगा। – JohnnyM
कुछ साल बाद इसे पढ़ने के लिए: मुझे 'collections.defaultdict 'ऑब्जेक्ट में कोई विशेषता नहीं है' count'' 'python3 के साथ' summary.count (q.closed') पर एक टाइपो भी है। –