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

时间:2018-10-05 15:10:02

标签: python xml odoo

我的地址显示如下:

enter image description here

我希望地址在它的不同行中显示:

laubachstr.1

laubastr.2

belrin

汉堡

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>

2 个答案:

答案 0 :(得分:1)

如果您使用浏览器检查为表单视图生成的HTML代码,则会发现city, state_idzip字段具有一个o_field_widget类,而该类又有一个display: block-inline,但您希望它是display: block

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

  1. 创建一个新的CSS类。我已将其添加到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/stackoverflow/tree/q52668609

克隆具有以上所有内容的最小模块

答案 1 :(得分:0)

从字段组中删除div,然后从您的字段中删除class =“ o_address_street”。这可能会给您预期的结果。