所以我有这个字典的月份如下:
MONTHS = {
1: "Janeiro",
2: "Fevereiro",
3: "Março",
4: "Abril",
5: "Maio",
6: "Junho",
7: "Julho",
8: "Agosto",
9: "Setembro",
10: "Outubro",
11: "Novembro",
12: "Dezembro",
}
我想有条件地注解查询集中的每个值,我知道我可以用Case和When来做这个,我也是这样做的:
queryset = queryset.annotate(
last_installment_month_as_string=Case(
When(last_installment_month=1, then=Value(MONTHS[1])),
When(last_installment_month=2, then=Value(MONTHS[2])),
When(last_installment_month=3, then=Value(MONTHS[3])),
When(last_installment_month=4, then=Value(MONTHS[4])),
When(last_installment_month=5, then=Value(MONTHS[5])),
When(last_installment_month=6, then=Value(MONTHS[6])),
When(last_installment_month=7, then=Value(MONTHS[7])),
When(last_installment_month=8, then=Value(MONTHS[8])),
When(last_installment_month=9, then=Value(MONTHS[9])),
When(last_installment_month=10, then=Value(MONTHS[10])),
When(last_installment_month=11, then=Value(MONTHS[11])),
When(last_installment_month=12, then=Value(MONTHS[12])),
)
)
但是我不能动态地做吗?比如在一个for循环中或者其他什么的?我试过在一个for循环中做,但是没有成功...
我期待做这样的事情:
for key, value in MONTHS.items():
queryset = queryset.annotate(
last_installment_month_as_string=Case(
When(last_installment_month=key, then=Value(value))
)
)
但那不管用!
1条答案
按热度按时间lg40wkob1#
是的,您可以使用: