首页 > 解决方案 > 在分组查询集中包含没有记录的选择

问题描述

我正在尝试在 django 中按带有选项的字段进行分组查询。我想获得所有选择值,数据库中没有记录的算法选择。

我的模型:

CHOICES = (
  ('new', 'New'),
  ('in_process', 'In process'),
  ('finished', 'Finished')
)
class Task(models.Model):
  ...
  status = models.CharField(max_length=10, choices=CHOICES)

我目前的查询是:

qs = Task.objects\
  .values('status')\
  .annotate(total=models.Count('status'))

此时,我只完成了数据库中的任务,但我想获取所有选择值,如果没有记录则为零。

任何想法?

标签: djangogroup-bydjango-queryset

解决方案


你可以这样做:

Task._meta.get_field('status').choices

模型字段上的选择仅在应用程序(Python)级别强制执行 - 数据库不知道哪些选择可用。


推荐阅读