根据Odoo中的用户选择批量创建

问题描述 投票:0回答:1

我有以下模型Program,Course,ProgramAdmission,CourseEnrollment。每门课程都与课程相关联。

在课程录取期间,我将显示所选课程的可用课程列表。对于每个显示的课程,我想显示一个下拉菜单,其中包含以下选项:未计划和计划。

现在,如果用户保存新的程序许可,我还希望通过在服务器端为每个计划的课程创建CourseEnrollment来将用户注册到计划的课程中。

如果用户丢弃新的程序许可,则不应在数据库中创建任何内容。

如何允许这样的条件批量创建模型对象?

谢谢!

batch-processing odoo
1个回答
0
投票

这很容易,你只需要开始编码。使用模型关系和字段创建模块。在ProgramAdmission模型上,在Program模型中添加了Many2one字段,在Course模型中添加了另一个字段。如果在创建新记录时取消表单,则不会在数据库中保存任何内容,但如果单击“保存”按钮,则会调用create方法获取新记录,并使用write方法查看现有记录。重写create方法,以便能够动态创建CourseEnrollment模型的新记录,并将其与要创建的ProgramAdmission记录相关联,方法是将其保存到同一ProgramAdmission模型中的新Many2one字段中。

为了使我的意思更清楚:

from odoo import models, fields, api


class Program(models.Model):
    _name = 'school.program'

    name = fields.Char()


class Course(models.Model):
    _name = 'school.course'

    name = fields.Char()


class ProgramAdmission(models.Model):
    _name = 'school.program.admission'

    course_id = fields.Many2one('school.course')
    program_id = fields.Many2one('school.program')
    enrollment_id = fields.Many2one('school.course.enrollment')

    @api.model
    def create(self, vals):
        enrollment_id = self.env['school.course.enrollment'].create({
            'course_id': vals['course_id'],
            'program_id': vals['program_id']
        })
        vals['enrollment_id'] = enrollment_id.id
        return super(ProgramAdmission, self).create(vals)


class CourseEnrollment(models.Model):
    _name = 'school.course.enrollment'

    course_id = fields.Many2one('school.course')
    program_id = fields.Many2one('school.program')
© www.soinside.com 2019 - 2024. All rights reserved.