当我选择选项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
答案 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
中实现readonly
和attrs
。