Pyramid / mongo :为 EmbeddedDocumentListField 构建一个嵌套的 tal:repeat

Pyramid / mongo : building a nested tal:repeat for a EmbeddedDocumentListField

我正在构建一个小应用程序并同时进行测试 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:repeat 我的类别

pt文件

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

视图模型

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>

问题是获取主题,我需要类别,但我还没有想出如何将循环中使用的类别提取到视图模型。有没有办法将变量从pt传递到viewmodel py文件?像 tal:repeat t themes(${c.id}) 这样的东西? 还是我做的完全错了,有一个简单的方法可以做到这一点?

我在之前的问题中找到了答案,抱歉打扰了

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 变量来获取嵌套数据。

金字塔真棒。