填写字段是可选的

时间:2019-06-16 23:24:21

标签: python methods odoo

当我选择选项Evaluation_id时,如何不必填写字段Class? 尝试执行以下方法,但对我不起作用。

class reserva (models.Model):

     _name='gimnasio.reserva'

     tipo_reserva=fields.Selection([('0','Clase'),('1','Evaluacion')])

     fecha_reserva=fields.Date()

     hora_inicio=fields.Datetime()

     hora_termino=fields.Datetime()

     estado_reserva=fields.Char()


     alumno_id = fields.Many2one(comodel_name='gimnasio.alumno', string='Alumno', required=True)

     clase_id = fields.Many2one(comodel_name='gimnasio.clase', string='Clase', required=True)

     evaluacion_id = fields.Many2one(comodel_name='gimnasio.evaluacion', string='Evaluacion', required=True)

     @api.constrains('tipo_reserva')

     def Check_tipo_reserva(self):

          if self.'Clase':

               raise 'evaluacion_id'=>required=False

1 个答案:

答案 0 :(得分:1)

您应该删除字段定义上的required或将其设置为False。您的要求可以通过使用视图定义来解决:

<form>
    <field name="tipo_reserva" />
    <field name="evaluacion_id" attrs="{'required': [('tipo_reserva', '=', '1')]}" />
    <field name="clase_id" attrs="{'required': [('tipo_reserva', '=', '0')]}" />
</form>

现在所需的状态是动态的,并且取决于字段tipo_reserva。那只是一个简短而丑陋的形式定义,但我希望您能从中得到启发。您还可以在invisible中实现readonlyattrs