首页 > 解决方案 > 填写字段是可选的

问题描述

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

标签: pythonmethodsodoo

解决方案


您应该删除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>

现在所需的状态是动态的并且依赖于 field tipo_reserva。这只是一个简短而丑陋的表单定义,但我希望你能理解它背后的想法。您还invisible可以readonlyattrs.


推荐阅读