2012-10-10 16 views
5

कल्पना कीजिए मैं निम्नलिखित मॉडल है:घटनाओं की सूची प्राप्त करें + मॉडल Django में गिनती?

class Person(models.Model): 
    ...other stuff... 
    optional_first_name= models.CharField(max_length=50, blank=True) 

मैं कैसे, एक अनुरोध है कि सबसे लोकप्रिय नामों में से एक सरणी देता है, घटना के घटते क्रम में, उनकी गिनती के साथ लिखने के बारे में जाना होगा खाली नामों को अनदेखा करते हुए?

13 Leslies, 8 Andys, 3 Aprils, 1 रॉन और 18 लोगों को उनके नाम निर्दिष्ट नहीं किया है के साथ एक डेटाबेस के लिए

यानी, उत्पादन होगा:

[('लेस्ली', 13), ('एंडी', 8), ('अप्रैल, 3), (' रॉन ', 1)]

निकटतम मैं प्राप्त कर सकते हैं नीचे दिए तरीके से है:

q= Person.objects.all() 
q.query.group_by=['optional_first_name'] 
q.query.add_count_column() 
q.values_list('optional_first_name', flat= True) 

लेकिन यह अभी भी काफी नहीं है मैं क्या चाहता हूँ।

उत्तर

10

कुछ खुदाई के बाद, अंत में पता चला:

Person.objects.values('optional_first_name').annotate(c=Count('optional_first_name')).order_by('-c') 
+2

तुम भी ' – okm

+0

कैसे इस प्रश्न के कुछ फिल्टर लागू करने के लिए' .exclude (optional_first_name = '') के लिए चाहते हो सकता है? फ़िल्टर की तरह केवल 'ए' से शुरू होने वाले नाम –

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