Python Django按字段值分组

Python Django按字段值分组,python,django,Python,Django,令人惊讶的是,我找不到一种方法来通过查询进行分组 我有一个查询集qs,我试图按some_prop.val进行分组,考虑到qs排除了some_prop为None的条目 假设值是[1,2,3],那么我会在这样的结果之后: {1: entries1, 2: entries2, 3: entries3} Django ORM是否提供了这样的功能来对结果进行分组?据我所知,Django ORM没有特定的方法,但您可以执行以下操作来获得按字段值分组的条目字典: 与flat=True一起使用可获取数据库中现

令人惊讶的是,我找不到一种方法来通过查询进行分组

我有一个查询集
qs
,我试图按
some_prop.val
进行分组,考虑到
qs
排除了
some_prop
None
的条目

假设值是
[1,2,3]
,那么我会在这样的结果之后:

{1: entries1, 2: entries2, 3: entries3}

Django ORM是否提供了这样的功能来对结果进行分组?

据我所知,Django ORM没有特定的方法,但您可以执行以下操作来获得按字段值分组的条目字典:

  • flat=True
    一起使用可获取数据库中现有值的列表(如果您事先不知道这些值)。还可以使用
    .distinct()
    删除重复值,因为我们不关心这些值:

    value_list = MyModel.objects.values_list(
        'interesting_field', flat=True
    ).distinct()
    
  • 现在遍历
    value\u列表
    并填写字典:

    group_by_value = {}
    for value in value_list:
        group_by_value[value] = MyModel.objects.filter(interesting_field=value)
    
  • 现在,
    groupby\u value
    dictionary将
    interest\u字段中的不同值作为键,并将queryset对象作为值,每个对象都包含
    MyModel
    的条目,其中
    interest\u字段=值列表中的值




    出于评论遗留原因将此内容留在此处。

    我做了一个in,它模拟了一个
    计数。。。分组依据
    SQL查询

    基本上,您需要利用用于分组的和用于依赖模型的

    以下是上述示例:

    我们可以执行
    计数。。。使用
    annotate()
    values()
    order\u BY()
    django.db.models
    Count
    方法:

    让我们的模型是:

    class Books(models.Model):
        title  = models.CharField()
        author = models.CharField()
    
    假设我们要计算每个不同作者在图书表中的图书对象数量:

    result = Books.objects.values('author')
                          .order_by('author')
                          .annotate(count=Count('author'))
    
    现在,结果包含一个包含两列的查询集:author和count:

      author    | count
    ------------|-------  
     OneAuthor  |   5 
    OtherAuthor |   2    
       ...      |  ...
    

    如果你能发布更多关于你尝试的查询的信息,那么回答对我们来说是有益的。是的,但我不想按计数分组,我说得很清楚,我想按值分组,我怎么能更清楚呢?我甚至包括了预期的输出。