在 django 模板中索引 QuerySet 数组
Posted
技术标签:
【中文标题】在 django 模板中索引 QuerySet 数组【英文标题】:Indexing a QuerySet array in django templates 【发布时间】:2015-02-19 18:35:50 【问题描述】:我正在尝试访问从模板中的视图传递的查询集数组。我想使用数字迭代器索引每个条目。我正在使用 django sn-p 来获取客户范围。这是我到目前为止所做的:
% for cust in customer_comments %
% for i in cust|length|get_range %
<tr>
<td>cust.i.customer_id</td>
<td>cust.i.feedback_detail</td>
</tr>
% endfor %
% endfor %
当我使用cust.i.customer_id
进行迭代时,它什么也不显示。但是当我使用cust.0.customer_id
或cust.1.customer_id
时,它会显示我想要的内容。请帮助我为什么不工作。
顺便说一句,这就是我在视图中初始化 customer_comments
对象的方式。
customer_comments = []
for i in all_features:
if OpenFeedback.objects.filter(feature_id = i.feature_id).exists():
feedback_obj = OpenFeedback.objects.filter(feature_id = i.feature_id)
customer_comments.append(feedback_obj)
【问题讨论】:
为什么不简单地遍历cust
列表而不对其进行索引呢? cust.i
将被循环变量替换。
你的意思是像 cust.customer_id?即使我这样做,也没有任何显示。我只是似乎不明白为什么 cust.0.customer_id 有效而 cust.i.customer_id 无效。
how to run this code in django template的可能重复
@user590028 那么我应该像这样进行索引吗? cust.forloop.counter0.customer_id 请告诉我确切的语法,我是 Django 的初学者
【参考方案1】:
您不会像在 Python 或 Django 模板中那样进行迭代:您会遍历列表本身。
% for customer in cust %
<tr>
<td>customer.customer_id</td>
<td>customer.feedback_detail</td>
</tr>
% endfor %
【讨论】:
我不敢相信我在做什么。那太简单了。非常感谢!以上是关于在 django 模板中索引 QuerySet 数组的主要内容,如果未能解决你的问题,请参考以下文章
在 django 模板中使用聚合 QuerySet 中的字段
在 Django 中过滤 Queryset 并设计正确的 urls.py 和模板