金字塔/ mongo:为EmbeddedDocumentListField构建嵌套的tal:repeat

时间:2018-08-09 06:56:53

标签: python mongodb pyramid chameleon

我正在构建一个小应用程序并同时测试Pyramid / Chameleon + MongoDB 到目前为止,我很喜欢它,但是我遇到了死胡同

快速查看我要从类别集合中显示的数据

_id:"category"
themes:Array
  0:Object
    _id:"theme1"
  1:Object
    _id:"theme2"
  2:Object
    _id:"theme3"
user:"username"

主题是mongoengine中的EmbeddedDocumentListField(但是为此,我只需要ID)

我想出了如何tal:用

重复我的类别

pt文件

<div class = "category" tal:repeat="c categories">
  <h2>${c.id}</h2>
</div>

viewmodel

self.categories = get_category_for_user(user)

我现在想要的是嵌套tal:repeat以显示这样的结果

<div class = "category" tal:repeat="c categories">
  <h2>${c.id}</h2>
  <div class="theme" tal:repeat="t themes">
    <div class="title">
      <a href="/theme/${t.id}">${t.id}</a></div>
    </div>
  </div>
</div>

问题是要获取主题,我需要类别,但我还没有弄清楚如何将循环中使用的类别提取到viewmodel。有什么办法可以将变量从pt传递到viewmodel py文件吗?像 tal:repeat the theme($ {c.id})这样的东西吗? 还是我完全错了,有一种简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

我在这里的上一个问题中找到了答案,很抱歉造成干扰

tal nested dictionary syntax

答案非常简单:

<div class = "category" tal:repeat="c categories">
  <h2>${c.id}</h2>
  <div class="theme" tal:repeat="t c.themes">
    <div class="title">
      <a href="/theme/${t.id}">${t.id}</a></div>
    </div>
  </div>
</div>

第3行的区别在于重用c变量以获取嵌套数据。

金字塔真棒。