odoo如何在网站模板中设置选定的属性

odoo how to set selected attribute in website-template

我在 Odoo 中遇到了一些麻烦,为网站公式设置 selected 属性。

我在底层模型中有一些数据,这些数据显示在表单内的 table 中。这些行显示正确,但 select 字段的值设置不正确。它始终显示 select 列表中的第一个值,而不是模型中保存的值。

    <t t-foreach="quote_lines" t-as="quote_line">               
    <tr>
       <td>
          <!--  public categories for a selection field -->
          <select t-attf-name="supplier_{{quote_line.line}}">
             <t t-foreach="categories" t-as="c">
                <t t-if="c.name==quote_line.supplier"><option t-field="c.name" selected="selected" /></t>
                <t t-if="c.name!=quote_line.supplier"><option t-field="c.name" /></t>
             </t>
          </select>
        </td>
        ....
    </tr>
    </t>

表单已加载到 odoo 中并显示正常 - 除了 -tag 忽略了我的 selected 属性。当我查看生成的 html 时,设置了 select/option 值,只是忽略了此属性。

任何提示我做错了什么或只是没有看到?

尝试使用 selected="True"

此外,看看 website_sale 对国家/地区的影响:

              <div t-attf-class="form-group #{error.get('shipping_country_id') and 'has-error' or ''} col-lg-6">
                  <label class="control-label" for="shipping_country_id">Country</label>
                  <select name="shipping_country_id" class="form-control" t-att-disabled="  'disabled' if shipping_id &gt;= 0 else ''">
                      <option value="">Country...</option>
                      <t t-foreach="countries or []" t-as="country">
                          <option t-att-value="country.id" t-att-selected="country.id == checkout.get('shipping_country_id')"><t t-esc="country.name"/></option>
                      </t>
                  </select>
              </div>

https://github.com/odoo/odoo/blob/9.0/addons/website_sale/views/templates.xml#L1072-L1080