【问题标题】:Indexing a QuerySet array in django templates在 django 模板中索引 QuerySet 数组
【发布时间】: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_idcust.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 无效。
  • @user590028 那么我应该像这样进行索引吗? cust.forloop.counter0.customer_id 请告诉我确切的语法,我是 Django 的初学者

标签: python django django-templates django-queryset


【解决方案1】:

您不会像在 Python 或 Django 模板中那样进行迭代:您会遍历列表本身。

{% for customer in cust %}
<tr>
    <td>{{customer.customer_id}}</td>
    <td>{{customer.feedback_detail}}</td>
</tr>
{% endfor %}

【讨论】:

  • 我不敢相信我在做什么。那太简单了。非常感谢!
猜你喜欢
  • 2021-02-15
  • 2016-11-19
  • 2020-01-18
  • 2013-01-26
  • 2017-06-19
  • 2018-05-31
  • 1970-01-01
  • 2011-06-06
  • 2013-06-06
相关资源
最近更新 更多