You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django的QuerySet中按变量名获取配料值?

解决Django模板中QuerySet对象属性取值问题

遍历所有配料

如果需要展示全部配料,直接在模板里用for循环遍历QuerySet即可,完全不需要处理逗号分隔的字符串:

{% for ingredient in ingredients.all %}
    <span>{{ ingredient.toppingName }}</span>
{% endfor %}

按位置获取单个配料

Django模板不支持[]下标语法,要改用.来访问索引位置的元素。比如取第一个配料的名称:

<p>第一个配料:{{ ingredients.all.0.toppingName }}</p>

要取第N个(从0开始计数),就把0换成对应的数字即可。

视图层确认数据传递

确保视图中已正确将关联的配料QuerySet传入模板上下文,比如通过多对多或外键关联获取:

# 视图示例代码
from .models import Pizza

def pizza_page(request):
    selected_pizza = Pizza.objects.get(id=1)
    # 假设Pizza和Ingredients是多对多关联,related_name为'ingredients'
    ingredients = selected_pizza.ingredients.all()
    return render(request, 'pizza.html', {'ingredients': ingredients})

排查常见问题

  • 检查模型字段名是否正确:确认Ingredients模型中确实存在toppingName字段(建议遵循Django命名规范用小写加下划线,比如topping_name,避免大小写错误)
  • 验证QuerySet是否非空:可在模板中先判断,避免空索引报错:
    {% if ingredients %}
        <p>第一个配料:{{ ingredients.all.0.toppingName }}</p>
    {% else %}
        <p>未添加任何配料</p>
    {% endif %}
    

内容的提问来源于stack exchange,提问作者Entl_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:35:19