【问题标题】:Django Queryset Occurences CountsDjango Queryset 出现次数
【发布时间】:2020-04-24 02:09:07
【问题描述】:

我有以下 django 模型...

class Entry(models.Model):
    entry_UUID = models.UUIDField()                                                                     
    entry_description = models.TextField()
    numeric_value = models.FloatField(null=True, blank=True) 
    entry_category = models.CharField()

我正在尝试查询数据库 - 我期望 entry_UUID 组和每个组的 numeric_value (Min/Max/Avg) 的一些统计信息和 entry_category 的计数。我不知道 entry_category 的具体值,但我希望它们形成一个集合(例如 {low, med, high})。

我尝试了以下查询:

Entry.objects.filter(
            entry_UUID__in = entry_UUIDs).values(
                'entry_UUID').annotate(
                    Avg('numeric_value'), 
                    Min('numeric_value'), 
                    Max('numeric_value'), 
                    Count('entry_category'))

返回...

<QuerySet [{'entry_UUID': UUID('9fcfea6d-9480-595f-1e1f-81130ddc0c99'), 'numeric_value__avg':
51.5089, 'numeric_value__min': 23.174, 'numeric_value__max': 76.421, 'entry_category__count': 4}, {'entry_UUID': UUID('9fcfea6d-9490-595f-1e1f-81130ddc0c99'), 'numeric_value__avg': 5.2882, 'numeric_value__min': 1.282, 'numeric_value__max': 9.7553, 'entry_category__count': 6}]>

对于 entry_category,我希望获取每个值的出现次数,而不是总次数。不知道如何解决这个问题。

谢谢。

【问题讨论】:

  • “entry_category__count”是否出错,看起来是对的。如果你认为它是错误的,想要预期的输出
  • 我正在寻找的是在同一个查询中 entry_category 的出现次数(例如 {'entry_category': 'green', 'entry_category__count': 1}, {'entry_category': 'red ', 'entry_category__count': 2}. 而不是总计数 ex. 'entry_category__count': 3

标签: python django django-queryset


【解决方案1】:

我认为使用这个可以实现你所需要的

Entry.objects.filter(
            entry_UUID__in = entry_UUIDs).values(
                'entry_UUID', 'entry_category').annotate(
                    Avg('numeric_value'), 
                    Min('numeric_value'), 
                    Max('numeric_value'), 
                    Count('entry_category'))

【讨论】:

    猜你喜欢
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2020-03-13
    • 2018-05-01
    • 2017-06-19
    • 2020-04-23
    相关资源
    最近更新 更多