python - 填写字段是可选的

标签 python methods odoo

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

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

最佳答案

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

<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。这只是一个简短而丑陋的定义,但我希望您能理解它背后的想法。您还可以在 attrs 中实现 invisiblereadonly

关于python - 填写字段是可选的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56623308/

相关文章:

java - 怎么 ?与所说的对象不同?

java - 在我的 printArray 方法中查看数组

python - 每天转换数据框行中给出的每个日期范围的数据

python - 更改网格大小以匹配网格中框的大小

python - python中的if或语句

java - 调用内部带有 for 循环的方法,而不更新变量

python - 为什么 Odoo 9 的 transient 模型中缺少二进制文件名字段?

python - OpenERP 字段保存时间值,例如 `08:04`

python - 根据带有属性的条件隐藏按钮

javascript - block 状 : code variables