【问题标题】:dynamicly hide fields and rows in tree view odoo 9在树视图odoo 9中动态隐藏字段和行
【发布时间】:2016-11-16 14:58:04
【问题描述】:

我有模型来存储运动员的训练结果和树视图来插入结果来自

型号代码是:

class GeneralFitnessDetails(Model):

    _name = 'general_fitness_details'
    generalFitnessDetails = Many2one("general_fitness")
    player = Many2one('player')
    exercise = Many2one("exercise")
    exercise_state = Selection([('by_reps', 'By Reps'),
                                ('by_time', 'By Time'),
                                ('by_distance', 'By Distance'),
                                ('by_weight', 'By Weight')])
    reps = Integer(string='Reps')
    time_sec = Integer(string='Seconds')
    weight = Integer(string='Weight/KG')
    distance = Integer(string='Distance/Meters')

查看代码

<tree>
<field name="player"/>
<field name="exercise"/>
<field name="exercise_state"/>
<field name="reps" invisible="[('exercise_state', '=', 'by_reps')]"/>
<field name="time_sec" invisible="[('exercise_state', '=', 'by_time')]"/>
<field name="weight" invisible="[('exercise_state', '=', 'by_weight')]"/>
<field name="distance" invisible="[('exercise_state', '=', 'by_distance')]"/>
</tree>

我需要创建一个按钮,它的功能是:onClick,它根据锻炼状态过滤树视图中显示列的可见性;因此,如果运动状态的值为“by_distance”,则它仅显示包含 by distance 值的列

此外,可见性必须自动更改,以便如果运动状态变为“按体重”,它会更改为它,依此类推。

【问题讨论】:

    标签: xml treeview openerp odoo-9 odoo-view


    【解决方案1】:

    您不能有条件地从树视图中隐藏字段,即使使用 attrs 或直接使用不可见属性。

    原因是树视图包含多条记录,因此不可能隐藏 1 条记录的字段而对其他人可见,因为标题对于所有记录都是通用的。这就是为什么 invisible 在树视图中不能有条件地工作的原因。

    是的,但它会像静态(而不是动态)一样工作,

    invisible="1" or invisible="True"
    

    如果树视图是可编辑的,您可以有条件地使用只读属性。

    【讨论】: