我试图弄清楚如何在条件语句中使用注释。
我的一个模型称为“产品”,我想按年份对对象进行分组,然后我希望每年获得该年度的总利润,然后除以满足特定状态的所有产品的总成本。
我的尝试如下:
from django.db.models.functions import Cast, Trunc
from django.db.models import Case, When, Value, FloatField
group_by = "year"
products.annotate(group_by=Trunc("timestamp", group_by)) # Add year
.values("group_by") # Group by year
.annotate(profit_margin=Cast(Sum("profit") / Case(When(status__name__in=["In Stock", "Not Sold"], then=Value(Product.cost)), default=0.0, output_field=FloatField())), FloatField)
除缺少括号外,我得到的最新错误是:
db_type() missing 1 required positional argument: 'connection'
也许我把事情复杂化了。
在此示例年份中,我需要查找的另一件事是如何将注释中的group_by keyword
动态更改为group_by variable
的值。