如何使用相关字段设置many2one对象的属性?

时间:2016-03-21 07:09:49

标签: openerp odoo-9

我是python和odoo的新手。我正在开发一个自定义模块来实现学校的学生申请。我的主要目标是收集申请数据。我有3个型号。

class ApApplicationsModel(models.Model):
    _name = 'ap.applications.model'    

class ApPrevSchoolModel(models.Model):    
    _name = 'ap.prevschool.model' 

class ApPersonModel(models.Model):    
    _name = 'ap.person.model' 
    _inherit = 'op.student'

ApPersonModel将用于存储学生,家长和监护人的详细信息。为此,我有一个不可见的选择属性ap_persontype

中已定义了3个多2个链接
ap_father_id = fields.Many2one('ap.person.model','Father Details', readonly=False,related='ap_prevschool_model.ap_name', store=True)

ap_mother_id = fields.Many2one('ap.person.model','Mother Details', readonly=False)

ap_student_id = fields.Many2one('ap.person.model','Student Details')

我有一个字段

ap_persontype = fields.Selection(
        [('student','Student'),('parent','Parent'),('grd','Guardian')],  'Person Type',default='student', track_visibility='onchange') 

在ap.person.model

我希望在启动表单视图以显示和隐藏某些字段时将人员类型设置为“学生”或“父母”或“监护人”。

我该怎么做?

像这样处理可能不是一个好的做法。我如何实现它?

2 个答案:

答案 0 :(得分:0)

我不知道你到底想要实现什么,但我想你想隐藏或显示一些字段的条件(在这种情况下的人的类型)。 因此,您要做的是将属性值设置为要隐藏或显示的所有字段,然后它将自动隐藏或显示。 小例子:

<field name="student_age" attrs="{'invisible': [('ap_persontype'),'not in',['parent','grd']]}"/>

我希望它对你有所帮助。

答案 1 :(得分:0)

  • 此逻辑只能使用一个模块,无需使用多个模型并尝试此代码:
  • 如果ap_persontype =学生则不可见其他字段。另一个领域的逻辑相同。
    这里我的代码逻辑是

    <field name="ap_student_id" attrs="{'invisible': [('ap_persontype'),'not in',['student',]]}"/> <field name="ap_mother_id" attrs="{'invisible': [('ap_persontype'),'not in',['parent',]]}"/> <field name="ap_father_id" attrs="{'invisible': [('ap_persontype'),'not in',['parent',]]}"/>