【问题标题】:count and sort according to column value in django query根据django查询中的列值进行计数和排序
【发布时间】:2017-09-08 17:41:08
【问题描述】:

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_count 即店铺名称的数量(避免重复) -> 示例 3

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

no_reports 即店铺名称的条目数

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

请给我一些建议以获得更好的响应,提前谢谢!!!

【问题讨论】:

    标签: python mysql django django-models


    【解决方案1】:
    Report_Shope.objects.values('shop_name').annotate(
       shop_count=Count('id')
    ).order_by('shop_count')
    

    Aggregation docs.

    【讨论】:

      【解决方案2】:

      您可以使用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”前面的负号表示降序。升序是隐含的。要随机订购,请使用“?”。

      【讨论】:

      • 我要统计shop_name的数量(避免重复)
      • 哪些必须避免?,因为您可以使用 distinct('column1', 'column2') 像 Report_Shop.objects.distinct('shop_name').count()
      猜你喜欢
      • 2020-04-16
      • 2015-10-09
      • 2018-01-23
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      • 2020-12-21
      相关资源
      最近更新 更多