根据django查询中的列值进行计数和排序

时间:2017-04-12 19:27:41

标签: python mysql django django-models

django模型

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

以上模型的一个shop_name允许的多个条目

如何计算shop_name的相同值???

shop_count即商店名称数量(避免重复) - >例3

s_name即商店名称 - > 1.yyy 2.xxx 3.zzzz

no_reports即商店名称的条目数

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

给我一​​些建议,以便更好地回复,谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用count()

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

要排序,您可以将模型中的元数据添加到默认顺序

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',) 

或在orfer_by()

的查询集中
Report_Shop.objects.order_by('barcode')
Report_Shop.objects.order_by('-barcode')

" -barcode"前面的负号表示降序。升序是隐含的。要随机订购,请使用"?"。

答案 1 :(得分:0)

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

web/http requests