Odoo 14:在树视图中添加部分功能
Posted
技术标签:
【中文标题】Odoo 14:在树视图中添加部分功能【英文标题】:Odoo 14: Add a section functionality in tree view 【发布时间】:2021-02-07 18:11:22 【问题描述】:我需要在我的一个树视图中添加一个部分 功能,如销售 > 报价视图具有。 .
我的view代码是这样的:
<record id="view_qualification_form_inh" model="ir.ui.view">
<field name="name">hr.applicant.form</field>
<field name="model">hr.applicant</field>
<field name="inherit_id" ref="hr_recruitment.hr_applicant_view_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name = 'description']" position="after">
<notebook>
<page string="Qualification">
<field name="qualification_lines">
<tree editable="bottom">
<control>
<create name="add_line_control" string="Add a line"/>
<create name="add_section_control" string="Add a section"
context="'default_display_type': 'line_section'"/>
</control>
<field name="qualification_type_id"/>
<field name="qualification_type_line_id" domain="[('qualification_type_id','=',qualification_type_id)]"/>
<field name="score" />
</tree>
</field>
<group class="oe_subtotal_footer">
<field name="avg_score" class="oe_subtotal_footer_separator"/>
</group>
</page>
</notebook>
</xpath>
</field>
</record>
我的模型代码:
class HrApplicant(models.Model):
_inherit = 'hr.applicant'
qualification_lines = fields.One2many('hr.applicant.qualification', 'qualification_data',)
avg_score = fields.Float(compute='compute_score_average',store=True,index=True, string='Average Score')
display_type = fields.Selection([
('line_section', "Section"),
('line_note', "Note")], default=False, help="Technical field for UX purpose.")
class Qualification(models.Model):
_name = 'hr.applicant.qualification'
_description = 'Applicant Qualification'
qualification_data = fields.Many2one('hr.applicant', string='Qualification')
qualification_type_id = fields.Many2one('hr.applicant.qualification.rule', string='Qualification Type')
qualification_type_line_id = fields.Many2one(related='qualification_type_id.qualification_type_line_id')
score = fields.Float(related='qualification_type_line_id.score')
问题是,我有一个 add a section 选项,但它的工作方式与默认的“添加一行”相同。
我知道它与 python 代码有很多关系,甚至试图从销售的插件中获取它,但它的结构非常复杂。我是初学者,所以如果有人可以帮助我提供代码或至少步骤。
【问题讨论】:
【参考方案1】:您需要将qualification_lines
小部件属性设置为section_and_note_one2many
并在申请资格模型中定义display_type
而不是applicant
模型,它将用于检查是否需要添加一个部分( 帮助:UX 目的的技术领域)。
在以下示例中,部分文本将存储在 name
字段中:
查看定义:
<field name="qualification_lines"
widget="section_and_note_one2many">
<tree editable="bottom">
<control>
<create name="add_line_control" string="Add a line"/>
<create name="add_section_control" string="Add a section"
context="'default_display_type': 'line_section'"/>
</control>
<field name="name" widget="section_and_note_text" optional="show"/>
<field name="display_type" invisible="1"/>
<field name="score"/>
</tree>
</field>
模型定义:
class Qualification(models.Model):
_name = 'hr.applicant.qualification'
_description = 'Applicant Qualification'
name = fields.Char(required=True)
display_type = fields.Selection([
('line_section', "Section"),
('line_note', "Note")], default=False, help="Technical field for UX purpose.")
qualification_data = fields.Many2one('hr.applicant', string='Qualification')
【讨论】:
一件事,名称列在树视图中不断显示,但它不应该显示。只要您点击添加一个部分,它就会显示并保存。 渲染器将检查是否有name,设置colspan,并返回它,如果你添加一个名为name
的字段,它将用于设置部分。您可以使用开发人员工具检查用于设置销售订单部分的字段。以上是关于Odoo 14:在树视图中添加部分功能的主要内容,如果未能解决你的问题,请参考以下文章