1. 常规的下拉框Selection内容(固定的)
my_module/views/views.xml
<?xml version="1.0" encoding="utf-8"?>
<record id="view_form_student_achieve_manage_sys_course" model="ir.ui.view">
<field name="name">课程信息</field>
<field name="model">student_achieve_manage_sys.course</field>
<field name="arch" type="xml">
<form>
<sheet>
<group name="group_top" string="课程信息编辑">
<field name="name"/>
<field name="teacher"/>
<field name="course_type"/>
<field name="information"/>
</group>
</sheet>
</form>
</field>
</record>
my_module/models/models.py
class Course(models.Model):
_name = 'student_achieve_manage_sys.course'
name = fields.Char(string="课程名称")
teacher = fields.Char(string="授课老师")
course_type = fields.Selection(selection=[('literacy', '文化课'), ('professional', '专业课'), ('elective', '选修课')], string="课程类型")
information = fields.Char(string="课程介绍")
结果展示
2. 下拉框Selection内容动态填充(动态添加)
从课程数据表中拉取数据列表填充到下拉框内容里面(Many2one)
my_module/views/views.xml
<?xml version="1.0" encoding="utf-8"?>
<record id="view_form_student_achieve_manage_sys_achieve" model="ir.ui.view">
<field name="name">成绩信息</field>
<field name="model">student_achieve_manage_sys.achievement</field>
<field name="arch" type="xml">
<form>
<sheet>
<group name="group_top" string="成绩信息编辑">
<field name="name"/>
<field name="course"/>
<field name="achievement"/>
<field name="test_date"/>
</group>
</sheet>
</form>
</field>
</record>
my_module/models/models.py
class Achievement(models.Model):
_name = 'student_achieve_manage_sys.achievement'
# _rec_name = 'name' 如果希望展示的字段是name以外的,可以修改_rec_name值,指定展示字段值
name = fields.Char(string="学生姓名", required=True)
# course = fields.Selection(selection=[('asd', '数学'), ('asd1', '语文'), ('asd2', '英语')], string="考试科目", default='asd')
course = fields.Many2one('student_achieve_manage_sys.course', ondelete='set null', string="考试科目", index=True)
achievement = fields.Char(string="学生成绩", required=True)
test_date = fields.Char(string="考试日期", required=True)
结果展示
扩展
如果希望下拉框中的值,不是name字段里的值,有两种方法可以修改
第一种:直接在类中修改_rec_name = 'name'的指定字段值,修改成自己想要的字段
第二种:在类中直接重写修改name_get()方法,自定义成你想要展示的字段
name_get()方法
@api.multi
@api.depends('name', 'code')
def name_get(self):
result = []
for account in self:
name = account.code + ' ' + account.name
result.append((account.id, name))
return result