gpt4 book ai didi

django - Django 中的条件注释

转载 作者:行者123 更新时间:2023-12-02 04:49:19 24 4
gpt4 key购买 nike

我得到了简单的需求(不是简单的实现),并弄清楚如何在不多次点击数据库且查询集中没有 .extra() 的情况下实现它。

Task:
name = xxx
status = models.IntegerField(choices=some_choices)
project = ForeignKey(Project)

Project:
name = xxx
code = xxx

项目包含具有各种状态的任务。 (假设状态=3已完成)现在,我想列出所有项目及其总任务和已完成的任务,如下所示

  1. 项目 1,total_tasks=5,completed_tasks=2
  2. 项目 1,total_tasks=2,completed_tasks=1

我可以通过注释获取total_tasks,但不能获取completed_tasks,因为它需要注释中的条件。有什么办法吗?

最佳答案

此功能是 Django 1.8 中的新功能。

引用:https://docs.djangoproject.com/en/1.8/ref/models/conditional-expressions/

这是一种可能性:

from django.db.models.aggregates import Count
from django.db.models.expressions import F, Value, Case, When

projects = Project.objects.annotate(
total_tasks=Count('task__pk'),
completed_tasks=Count(Case(
When(status=3, then=F('task__pk')),
output_field=IntegerField()
))).all()

关于django - Django 中的条件注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3607661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com