django - Django 注解的数学运算

标签 django django-models django-templates

我有一个定义 TimeSlot 的 Django 模型。每个 TimeSlot 可以容纳一定数量的用户 (TimeSlot.spots)。每个 TimeSlot 中还包含一定数量的用户(多对多字段,TimeSlot.participants

当我传递给向用户显示可用时间段的模板时,我用 TimeSlot.objects.annotate(Count('participants')) 进行注释,它给出了当前持有的用户数量按时间段作为 participants__count

但是,我真正想要的是剩余的名额数量,容量 (TimeSlot.spots) 减去当前持有的数量 (participants__count)。如何使用这个新数字注释另一个字段,以便将其传递给模板?

最佳答案

使用注释仍然是不可能的(尽管计划在 Django 中实现)。但您可以使用 .extra() 查询来完成此操作。看我的answer到另一个问题了解详细信息。

更新:

本质上,您需要像这样的查询:

items = MyModel.objects.extra(
    select = {'variance': 'Model.someField - SUM(relatedModel__someField)'},
)

关于django - Django 注解的数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3155148/

相关文章:

python - 遵循照片应用程序教程时出现 Django models.py 错误

django - 如何将 IntelliJ 实时编辑与 django 模板结合使用?

python - 如何在 Django 模板上实现 "back"链接?

django - Django 如何过滤已评估的查询集?

python - Django:管理界面中多对多项目的名称

python - 如何从 child 级联删除到 parent

html - Css 为什么我的 <a> 标签不在我的 "div"中间。 valign=middle 不起作用

django - 基于类的通用 View 和 DRY

python - Selenium 在生产中仅在 headless 模式下工作是真的吗? ( Django )

python - 如何合并元组或将列表转换为元组?