Odoo - 如何从其他模型正确复制视图
Odoo - how to properly copy views from other model
我有一个模型。例如,假设是这样的:
class my_model(models.Model):
_name = 'my.model'
field1 = fields.Char('name')
它有树视图和表单视图。两者都正常工作。
现在我创建了新模型,复制旧模型:
class my_model_template(models.Model):
_name = 'my.model.template'
_inherit = 'my.model'
现在到这部分,一切都很好。它复制旧模型的所有内容。但是说到浏览量..
所以我为 'my.model.template' 视图(树和表单)做了这个:
<record id="view_my_model_template_tree" model="ir.ui.view">
<field name="name">my.model.template.tree</field>
<field name="model">my.model.template</field>
<field name="inherit_id" ref="my_model.view_my_model_tree"/>
<field name="arch" type="xml">
<tree string="My Model" position="attributes">
<attribute name="string">My Model Template</attribute>
</tree>
</field>
</record>
<record id="view_my_model_template_form" model="ir.ui.view">
<field name="name">my.model.template.form</field>
<field name="model">my.model.template</field>
<field name="inherit_id" ref="my_model.view_my_model_form"/>
<field name="arch" type="xml">
<form string="My Model" position="attributes">
<attribute name="string">My Model Template</attribute>
</form>
</field>
</record>
但它没有正确复制视图。例如,树视图仅显示名称字段,而在原始视图中它有四个字段。在表单视图中,它似乎显示了所有字段,但这些字段位于某个随机位置,没有任何格式(在旧视图中)。
您需要指定为哪种视图模式打开哪个视图。因为当你复制另一个模型的视图时,它似乎没有自动找到正确的视图(即使为每个模式只定义了一个)
<record model="ir.actions.act_window.view" id="action_my_model_template_tree">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_my_model_template_tree"/>
<field name="act_window_id" ref="action_my_model_template"/>
</record>
<record model="ir.actions.act_window.view" id="action_my_model_template_form">
<field name="sequence" eval="1"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_my_model_template_form"/>
<field name="act_window_id" ref="action_my_model_template"/>
</record>
备注
此外,如果您将在其他模型视图中的任何地方使用此类模型,并且您尝试直接从其他视图打开它的表单,它也会打开 "unformatted" 视图。要绕过这个,您需要指定要打开的视图:
例如像这样:
<record id="view_my_other_model_form" model="ir.ui.view">
<field name="name">my.other.model.form</field>
<field name="model">my.other.model.</field>
<field name="arch" type="xml">
<form string="My Other Model">
<field name="my_model_template_id"
context="{'form_view_ref': 'my_model_template.view_my_model_template_form'}"/>
</form>
</field>
</record>
我有一个模型。例如,假设是这样的:
class my_model(models.Model):
_name = 'my.model'
field1 = fields.Char('name')
它有树视图和表单视图。两者都正常工作。
现在我创建了新模型,复制旧模型:
class my_model_template(models.Model):
_name = 'my.model.template'
_inherit = 'my.model'
现在到这部分,一切都很好。它复制旧模型的所有内容。但是说到浏览量..
所以我为 'my.model.template' 视图(树和表单)做了这个:
<record id="view_my_model_template_tree" model="ir.ui.view">
<field name="name">my.model.template.tree</field>
<field name="model">my.model.template</field>
<field name="inherit_id" ref="my_model.view_my_model_tree"/>
<field name="arch" type="xml">
<tree string="My Model" position="attributes">
<attribute name="string">My Model Template</attribute>
</tree>
</field>
</record>
<record id="view_my_model_template_form" model="ir.ui.view">
<field name="name">my.model.template.form</field>
<field name="model">my.model.template</field>
<field name="inherit_id" ref="my_model.view_my_model_form"/>
<field name="arch" type="xml">
<form string="My Model" position="attributes">
<attribute name="string">My Model Template</attribute>
</form>
</field>
</record>
但它没有正确复制视图。例如,树视图仅显示名称字段,而在原始视图中它有四个字段。在表单视图中,它似乎显示了所有字段,但这些字段位于某个随机位置,没有任何格式(在旧视图中)。
您需要指定为哪种视图模式打开哪个视图。因为当你复制另一个模型的视图时,它似乎没有自动找到正确的视图(即使为每个模式只定义了一个)
<record model="ir.actions.act_window.view" id="action_my_model_template_tree">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_my_model_template_tree"/>
<field name="act_window_id" ref="action_my_model_template"/>
</record>
<record model="ir.actions.act_window.view" id="action_my_model_template_form">
<field name="sequence" eval="1"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_my_model_template_form"/>
<field name="act_window_id" ref="action_my_model_template"/>
</record>
备注 此外,如果您将在其他模型视图中的任何地方使用此类模型,并且您尝试直接从其他视图打开它的表单,它也会打开 "unformatted" 视图。要绕过这个,您需要指定要打开的视图:
例如像这样:
<record id="view_my_other_model_form" model="ir.ui.view">
<field name="name">my.other.model.form</field>
<field name="model">my.other.model.</field>
<field name="arch" type="xml">
<form string="My Other Model">
<field name="my_model_template_id"
context="{'form_view_ref': 'my_model_template.view_my_model_template_form'}"/>
</form>
</field>
</record>