我的 Django views.py
中有一个查询集。我正在使用 annotate
根据每个对象的 promo
向每个对象添加一个 id
属性。但是这不起作用:
bytes = Byte.objects.filter(
published=True
).annotate(
# add path to promo image based on byte's id property
promo=Value('../static/images/promo-'+id+'.png', output_field=CharField())
).order_by(
'-publish_date'
)
我收到错误:name 'id' is not defined
答案 0 :(得分:1)
您尝试访问变量 id 的方式。尝试使用 Concat 函数:
from django.db.models.functions import Concat
bytes = Byte.objects.filter(
published=True
).annotate(
# add path to promo image based on byte's id property
promo=Concat(Value('../static/images/promo-'), 'id', Value('.png'), output_field=CharField())
).order_by(
'-publish_date'
)