我有一个定义 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/