动态变量 qweb odoo v8

dynamic variable qweb odoo v8

我有一个网页,我需要在其中动态创建一些字段和变量。

让我解释一下:在第一页上,我有一个文本字段,我必须在其中键入我想要的用户数。该数字作为参数传递给下一页(post 方法)并在第二页上收集为 nb_user。

在第二页的 template.xml 中,我有以下代码:

  <form method="POST" class="col-md-8" action="/page_three">


  <t t-foreach="nb_user" t-as="user">
    <input type="text" name="comp_1_user_1" id="comp_1_user_1" class="form-control" placeholder="Computer user"/>

   </t>


<input type="submit" class="btn btn-primary" value="Validate"/>

我想要的是,根据在 post (nb_user) 中传递的数字,它应该动态创建该数量的文本字段并创建唯一 ID (comp_1_user_1, comp_1_user_2 等......) 这样我就可以将该数据输入到我的数据库中。

所以如果参数是 3 那么它应该创建 3 个文本字段并创建 3 个变量 comp_1_user_1, comp_1_user_2, comp_1_user_3.

希望我说得够清楚了。 我是 Odoo 和 Qweb 的新手。

感谢您提供的任何帮助。

要将文字与 non-literals 混合使用 tf-attf-$name 属性,其中 $name 代表所需的属性。作为参数,您可以使用 format-string,在您的情况下:

<t t-foreach="nb_user" t-as="user">
    <input type="text" 
           t-attf-name="comp_1_user_{{ user }}"
           t-attf-id="comp_1_user_{{ user }}" 
           class="form-control" 
           placeholder="Computer user"/>
</t>

这将被 QWeb 评估为属性 name(分别为 id),其内容被评估为格式字符串。也就是说,字符串 comp1_user_ 按原样传递, {{ user }} 片段的内容被评估为 Python 代码。

运行 数组包含 [1,2,3] 而不是像这样 nb_user

<t t-foreach="[1,2,3]" t-as="user">
    <input type="text" 
    t-attf-name="comp_1_user_{{ user }}" 
    t-attf-id="comp_1_user_{{ user }}"
    class="form-control" 
    placeholder="Computer user"/>
</t>

导致

nameid 迭代 comp_1_user_1comp_1_user_2comp_1_user_3。来自 Chrome DevTools 的屏幕截图:

更多信息see docs