如何基于Many2one字段创建动态序列?

时间:2018-03-09 06:26:31

标签: python xml python-2.7 odoo odoo-10

如何基于 Many2one 字段创建动态序列,而不是固定值。

例如,学生注册号基于学位,批次和年份。 如何使用Odoo 10中的序列实现此功能?

1 个答案:

答案 0 :(得分:1)

您可以按照以下步骤制作动态序列。如果您提供了有关代码的更多详细信息,我会更准确,但我认为您理解管理目标的想法。

data 文件夹中创建 sequences.xml 文件,并将该文件添加到__openerp__.py

<record id="seq_type_student_registration_number" model="ir.sequence.type">
    <field name="name">Student registration number</field>
    <field name="code">student.registration.number</field>
</record>

<record id="seq_student_registration_number" model="ir.sequence">
    <field name="name">Student registration number</field>
    <field name="code">student.registration.number</field>
    <field name="prefix">DEGREE/BATCH/%(y)s</field>
    <field name="padding">3</field>
</record>

在* .py文件中,从模型继承以修改其create方法:

@api.model
def create(self, vals):
    record = super(YourModel, self).create(vals)
    sequence = self.env['ir.sequence'].next_by_code(
        'student.registration.number') or '/'
    sequence = sequence.\
        replace('DEGREE', record.degree_id.name).\
        replace('BATCH', record.batch_id.name)
    record.write({
        'your_field': sequence,
    })