2017-04-12 7 views
0

django ModellZählung und Sortierung nach Spaltenwert in django Abfrage

class Report_Shop(models.Model): 
barcode = models.CharField(max_length=500) 
email = models.CharField(max_length=500) 
shop_name = models.CharField(max_length=500) 

obige Modell mehrere Einträge eines shop_name ermöglichen

wie gleichen Wert von shop_name zu zählen, ???

shop_count dh Zahl der Shop-Name (vermeiden wiederholt) -> Beispiel 3

s_name dh Geschäftsnamen -> 1.yyy 2.xxx 3.zzzz

no_reports dh Anzahl der Einträge von Geschäftsnamen

-> 1.yyy (3) 
-> 2.xxx (11) 
-> 3.zzz (5) 

geben Sie mir einige Tipps für eine bessere Antwort, danke im Voraus!

Antwort

0

können Sie verwenden count()

Report_Shop.objects.filter(barcode='value').count() 

und sortieren Sie Meta in Ihrem Modell hinzufügen können, um

class Report_Shop(models.Model): 
    barcode = models.CharField(max_length=500) 
    email = models.CharField(max_length=500) 
    shop_name = models.CharField(max_length=500) 

    class Meta: 
     ordering = ('-barcode',) 

oder in Ihrem queryset mit orfer_by()

Report_Shop.objects.order_by('barcode') 
Report_Shop.objects.order_by('-barcode') 

den negativen auf dem Standard Das Zeichen vor "-barcode" gibt die absteigende Reihenfolge an. Aufsteigende Reihenfolge ist impliziert. Um nach dem Zufallsprinzip zu sortieren, verwenden Sie "?".

+0

ich möchte die Anzahl von shop_name (Vermeidung wiederholt) –

+0

welche müssen vermieden werden ?, weil Sie distinct ('column1', 'column2') wie Report_Shop.objects.distinct ('shop_name'). Count verwenden können() –

+0

danke Kumpel ... sehr hilfreich –

0
Report_Shope.objects.values('shop_name').annotate(
    shop_count=Count('id') 
).order_by('shop_count') 

Aggregation docs.

+0

sehr hilfreich danke –