我有以下模型Program,Course,ProgramAdmission,CourseEnrollment。每门课程都与课程相关联。
在课程录取期间,我将显示所选课程的可用课程列表。对于每个显示的课程,我想显示一个下拉菜单,其中包含以下选项:未计划和计划。
现在,如果用户保存新的程序许可,我还希望通过在服务器端为每个计划的课程创建CourseEnrollment来将用户注册到计划的课程中。
如果用户丢弃新的程序许可,则不应在数据库中创建任何内容。
如何允许这样的条件批量创建模型对象?
谢谢!
这很容易,你只需要开始编码。使用模型关系和字段创建模块。在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')