Odoo 10:如何在联系表单视图中制作单独的地址行?

Odoo 10 : How to make separate address lines in contact form view?

我的地址是这样的:

我希望地址显示在不同的行中,如下所示:

laubachstr.1

laubastr.2

贝尔林

汉堡

12345

德国

我试过这个方法但是没有用:

https://www.odoo.com/es_ES/forum/ayuda-1/question/how-can-i-change-address-format-in-customer-form-view-17056

以下是我的格式:

%(street)s

%(street2)s

%(city)s

%(state_id)s

%(zip)s 

%(country_id)s

如何让这个地址数据出现在不同的行中??

信息:我在表单视图中的地址字段是:

<div>
                                                    <div class="o_address_format" name="div_address">
                                                        <field name="street" placeholder="Street..." class="o_address_street"/>
                                                        <field name="street2" placeholder="Street 2..." class="o_address_street"/>
                                                        <field name="city" placeholder="City" class="o_address_city"/>
                                                        <field name="state_id" class="o_address_state" placeholder="State" options="{&quot;no_open&quot;: True}" context="{'country_id': country_id, 'zip': zip}"/>
                                                        <field name="zip" placeholder="ZIP" class="o_address_zip"/>
                                                        <field name="country_id" placeholder="Country" class="o_address_country" options="{&quot;no_open&quot;: True, &quot;no_create&quot;: True}"/>
                                                    </div>
                                                </div>

如果您使用浏览器检查为表单视图生成的 HTML 代码,您会发现 city, state_idzip 字段有一个 o_field_widget class 反过来有一个 display: block-inline,但您希望它是 display: block.

因此,假设您有一个名为 my_module 的模块,一种解决方案如下:

  1. 创建一个新的 CSS class。我将它添加到 my_module/static/src/less/style.less

    
    .my_display_block {
      display: block !important;
    }
    
  2. 将样式文件添加到后端资源。我将它添加到 my_module/templates/assets.xml:

    
    <?xml version="1.0" encoding="utf-8"?>
    <odoo>
        <data>
            <template id="assets_backend" name="my module backend assets" inherit_id="web.assets_backend">
                <xpath expr="//script[last()]" position="after">
                    <link rel="stylesheet" href="/my_module/static/src/less/style.less"/>
                </xpath>
            </template>
        </data>
    </odoo>
    
  3. 修改您的联系表。我将以下内容添加到 my_module/views/res_partner.xml

    
    <?xml version="1.0" encoding="utf-8"?>
    <odoo>
      <data>
        <record id="address_in_block_form" model="ir.ui.view">
          <field name="name">Display address in block style
          <field name="model">res.partner
          <field name="inherit_id" ref="base.view_partner_form"/>
          <field name="arch" type="xml">
            <xpath expr="//field[@name='city']" position="attributes">
          <attribute name="class" add="my_display_block" separator=" "/>
            </xpath>
            <xpath expr="//field[@name='state_id']" position="attributes">
          <attribute name="class" add="my_display_block" separator=" "/>
            </xpath>
            <xpath expr="//field[@name='zip']" position="attributes">
          <attribute name="class" add="my_display_block" separator=" "/>
            </xpath>
          </field>
        </record>
      </data>
    </odoo>
    
  4. 最后,确保您的模板和视图是从 __manifest__.py

    
        'data': [
            'templates/assets.xml',
            'views/res_partner.xml',
            # 'security/ir.model.access.csv',
        ],
    

您可以从 https://github.com/AdanCortes/Whosebug/tree/q52668609

克隆一个包含以上所有内容的最小模块

从字段组中删除 div 并从您的字段中删除 class="o_address_street"。这可能会给你预期的结果。