以下是我认为可行的方法:我有一个按游戏索引并包含 gameSlots 的字典 确认:{{gameSlot.game.name}} 有效(其他 gameSlot.game.x 属性也可以) 确认:assignGameSlotsInMyGames 是持有 {game: [gameSlot1, gameSlot1]} 但是: {% for gameSlot2 in assignedGameSlotsInMyGames[gameSlot.game] %} 没有迭代
我在做一些明显错误的事情吗?(如果需要,我可以发布更完整的代码 - 我已经用一个非常丑陋的解决方法替换了代码,但很乐意将其带回以显示测试结果等)。
添加了更多详细信息....
数据为:assignedGameSlotsInMyGames 包含一个游戏(名为“Later”),该游戏具有两个分配的游戏槽。
解决方法打印这些游戏插槽的内容:
{% for game, gameSlots in assignedGameSlotsInMyGames.iteritems() %}
{% if gameSlot.game.name == game.name %}
{% for gameSlot2 in gameSlots %}
<tr>
<td> {{gameSlot2.user.email}} </td>
<td> {{gameSlot2.gameCharacter.characterType}} </td>
</tr>
{% endfor %}
{% endif %}
{% endfor %}
附加说明:存在的原因:
if gameSlot.game.name == game.name
是我正在遍历属于特定用户的所有游戏插槽。当我显示该 gameSlot 时,我想包含有关该 gameSlot 引用的游戏的其他信息。由于我尝试(如下)直接引用该游戏没有奏效,我遍历所有游戏并在“外循环”中使用与当前游戏匹配的游戏(蹩脚,是的 - 这就是我发布问题的原因)。注意:对于我正在测试的示例,只有一款名为“Later”的游戏。
有一个外部循环正在遍历所有 gameSlot.games - 唯一的迭代是当 gameSlot.game.name == "Later" 时。而不是所有这些额外的循环,我想我可以使用:
{% for gameSlot2 in assignedGameSlotsInMyGames[gameSlot.game] %}
<tr><td>Iteration</td></tr>
{% endfor %}
我在想,由于assignedGameSlotsInMyGames 是一个由游戏对象索引的字典,其值为gameSlots,这应该可以工作。但是没有打印迭代。
调试代码:
<tr><td colspan="6">TestCode - gameSlot.game = {{gameSlot.game}}, assignedGameSlotsInMyGames[gameSlot.game] = {{assignedGameSlotsInMyGames[gameSlot.game]}} </td></tr>
<tr><td colspan="6">TestCode - gameSlot.game.name = {{gameSlot.game.name}}, assignedGameSlotsInMyGames = {{assignedGameSlotsInMyGames}}</td></tr>
<tr><td colspan="6">Test from Ellochka - assignedGameSlotsInMyGames.game = {{assignedGameSlotsInMyGames.game}}</td></tr>
有输出:
TestCode - gameSlot.game = , assignedGameSlotsInMyGames[gameSlot.game] =
TestCode - gameSlot.game.name = Later, assignedGameSlotsInMyGames = {: [, ]}
Test from Ellochka - assignedGameSlotsInMyGames.game =
这是我第一次使用 Jinja2 模板(和 Python),所以我可能会很困惑。