Odoo 10:如何在联系表单视图中制作单独的地址行?
Odoo 10 : How to make separate address lines in contact form view?
我的地址是这样的:
我希望地址显示在不同的行中,如下所示:
laubachstr.1
laubastr.2
贝尔林
汉堡
12345
德国
我试过这个方法但是没有用:
以下是我的格式:
%(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="{"no_open": 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="{"no_open": True, "no_create": True}"/>
</div>
</div>
如果您使用浏览器检查为表单视图生成的 HTML 代码,您会发现 city, state_id
和 zip
字段有一个 o_field_widget
class 反过来有一个 display: block-inline
,但您希望它是 display: block
.
因此,假设您有一个名为 my_module
的模块,一种解决方案如下:
创建一个新的 CSS class。我将它添加到 my_module/static/src/less/style.less
.my_display_block {
display: block !important;
}
将样式文件添加到后端资源。我将它添加到 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>
修改您的联系表。我将以下内容添加到 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>
最后,确保您的模板和视图是从 __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"。这可能会给你预期的结果。
我的地址是这样的:
我希望地址显示在不同的行中,如下所示:
laubachstr.1
laubastr.2
贝尔林
汉堡
12345
德国
我试过这个方法但是没有用:
以下是我的格式:
%(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="{"no_open": 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="{"no_open": True, "no_create": True}"/>
</div>
</div>
如果您使用浏览器检查为表单视图生成的 HTML 代码,您会发现 city, state_id
和 zip
字段有一个 o_field_widget
class 反过来有一个 display: block-inline
,但您希望它是 display: block
.
因此,假设您有一个名为 my_module
的模块,一种解决方案如下:
创建一个新的 CSS class。我将它添加到
my_module/static/src/less/style.less
.my_display_block { display: block !important; }
将样式文件添加到后端资源。我将它添加到
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>
修改您的联系表。我将以下内容添加到
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>
最后,确保您的模板和视图是从
__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"。这可能会给你预期的结果。