2010-11-14 53 views
1

我有以下字典与对象列表。如何在Django中迭代这个列表的列表的字典?

args = {'Qtag': [ 
        [<Question: Question object>, <Tags: Tags object>], 
        [<Question: Question object>, <Tags: Tags object>] 
       ] 
     } 

我views.py内

args=dict(Qtag=Questag) 
t=loader.get.template('main.html') 
c=Context(args) 

和我的main.html中里面,我想重复以下方式

{%if Qtag %} 
    {% for item_list in Qtag %} 
    {% for item in item_list %} 
     </h4> <b> Question</b>:{{item.qid}} {{item.title}} </h4><br/> 
     </h4> {{item.question}} </h4> 
     <button name="tag" type="submit" value="tagname"> {{item.tagname}} </button> 
    {% endfor %} 
    {% endfor %} 
{% endif %} 

当我在我的主试图用上述方法.html,我得到的东西显示在屏幕上4次。在这里,由问题对象列表和标签对象列表组成的第一个列表对应于单个问题,对于另一个问题类似,因此在屏幕中我只想显示两个问题及其对应的标签。我无法正确迭代以得到我所需要的。任何想法如何实现这一点!

谢谢。

回答

2

我不确定什么args=dict(Qtag=Questag)意味着在您的代码(因为我不知道什么Questag是什么)。我不知道你的标签是否可迭代(我假设如此)。您的HTML看起来格式不正确(例如,我没有看到开头h4)。

这就是我想要得到类似于你要找的东西。你可以在这工作。

{% if Qtag %} 
    {% for question, tags in Qtag %} 
    {# First put in the question header #} 
    <h4>Question : {{question.qid}} {{question.title}} </h4> 
    {# Then the question body #} 
    <p> 
    {{question.question}} 
    </p> 
    {# Now a tag list #} 
    <ul> 
    {% for tag in tags %} 
     <li> 
      <button name = "tag" type="submit" value="{{tag.name}}"> 
      {{tag.name}} 
      </button> 
     </li> 
    {% endfor %}  
    </ul> 
    {% endfor %} 
{% endif %} 

你原来的解决方案是遍历列表平方(你每一个外部循环遍历列表一次),这就是为什么你看到正在打印4倍的东西。

+0

嗨,谢谢。我得到了答案。我尝试了item.0.qid,即使用item.0访问Question对象和item.1以访问Tags对象,并删除了第二个for循环{item for item in item%中的%}。 – karanece 2010-11-14 21:46:23