from odoo import api, fields, models class CourseChapter(models.Model): _name = 'course.chapter' _description = '课程章节' _rec_name = 'name' _inherit = ['mail.thread'] _order = 'course_id, sequence, id' name = fields.Char(string='章节名称', required=True) sequence = fields.Integer(string='序号', default=10) description = fields.Html(string='章节描述') course_id = fields.Many2one('learning.course', string='所属课程', required=True, ondelete='cascade') is_published = fields.Boolean(string='是否发布', default=True) resource_count = fields.Integer(string='资源数量', compute='_compute_resource_count') video_count = fields.Integer(string='视频数量', compute='_compute_resource_count') doc_count = fields.Integer(string='文档数量', compute='_compute_resource_count') resource_ids = fields.One2many('course.chapter.resource', 'chapter_id', string='章节资源') # homework_ids = fields.One2many('course.homework', 'chapter_id', string='关联作业') syllabus_ids = fields.One2many('course.syllabus', 'chapter_id', string='教学大纲/教案') def _compute_resource_count(self): for record in self: record.resource_count = len(record.resource_ids) record.video_count = len(record.resource_ids.filtered(lambda r: r.resource_type == 'video')) record.doc_count = len(record.resource_ids.filtered(lambda r: r.resource_type in ['pdf', 'ppt'])) def action_publish(self): self.is_published = True def action_hide(self): self.is_published = False