Пакетное создание на основе выбора пользователя в Odoo - PullRequest
0 голосов
/ 20 октября 2018

У меня есть следующие модели Program, Course, ProgramAdmission, CourseEnrollment.Каждый курс связан с программой.

При поступлении в программу я показываю список доступных курсов для выбранной программы.Для каждого показанного курса я хочу показать выпадающее меню со следующими вариантами: Не запланировано и не запланировано.

Теперь, если пользователь сохраняет прием новой программы, я также хочу зарегистрировать пользователя в запланированных курсах с помощьюсоздание CourseEnrollment на стороне сервера для каждого запланированного курса.

И если пользователь отменяет допуск к новой программе, в базе данных ничего создавать не нужно.

Как разрешить такую ​​условную партиюсоздание модельных объектов?

Спасибо!

1 Ответ

0 голосов
/ 22 октября 2018

Это просто, вам просто нужно начать его кодировать.Создайте модуль с моделями отношений и полей.В модели ProgramAdmission добавьте поле Many2one к модели Program, а другое - к модели Course.Если вы отмените форму при создании новой записи, в вашей БД ничего не будет сохранено, но если вы нажмете кнопку «Сохранить», она вызовет метод create для новых записей и методы write для существующих.Переопределите метод create, чтобы иметь возможность динамически создавать новую запись модели CourseEnrollment и связать ее с записью ProgramAdmission, которую нужно создать, сохранив ее в новом поле Many2one в той же модели ProgramAdmission.

Чтобы прояснить, что я имею в виду:

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...