Django:使用对象的 属性 创建带有注释的查询集
Django: Make a Queryset with annotate using an object's property
我的 Django views.py
中有一个查询集。我正在使用 annotate
根据每个对象的 id
添加 promo
属性 到每个对象。但是这不起作用:
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
您尝试访问变量 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'
)
我的 Django views.py
中有一个查询集。我正在使用 annotate
根据每个对象的 id
添加 promo
属性 到每个对象。但是这不起作用:
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
您尝试访问变量 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'
)