odoov9在编辑表单时设置一个动态域(不创建)

2024-04-20 09:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

假设您正在设置一个名为“动物类型”的字段,并且有一个字段依赖于这个名为“最爱的玩具”。如果“动物类型”是一只狗,我想将“favority”的域设置为类似于('isdogtoy','=',True)的值。如果它是一只猫,那么也许我们把它设为False或其他条件。在

通常要设置动态域,可以使用onchange,然后为字段设置域。在

然而,在有些情况下什么都没有改变。例如,如果编辑现有记录,则不必调用onchange。如果我从不改变“动物类型”,那么我在“最爱的玩具”上的域就不会通过我的onchange方法设置。在

我不知道在奥多里我们是如何动态地做到这一点的。看来显然应该有办法,但我在这上面找不到任何东西。在


Tags: 方法falsetrue编辑类型记录情况动态
1条回答
网友
1楼 · 发布于 2024-04-20 09:31:51

这是我能想到的最好的,使用计算域。下面是我的代码中的一个示例解决方案

在我的XML中

 <field name="uom_id" position="replace">
      <!  The category_id.name is really only used to filter when islocaluom=True. The result is that if a uom_class is used, only uom's from that class can be selected.  Otherwise, the default uom's are present  >

      <field name="uom_id" groups="product.group_uom" domain="['&amp;',('islocaluom','=',calcislocaluom),'|',('islocaluom','=',False),('category_id','=',calccatidname)]" options="{'no_create' : True},{'no_create_edit' : True}" />
  </field>

现在我使用store=True创建了一些计算字段,然后在compute函数中设置它们。在

^{pr2}$

我将暂缓将此标记为正确答案,因为要创建静态定义的域(这些域实际执行我希望它们执行的操作,并根据数据动态地执行操作)非常困难。。。。但是,必须用反波兰语来表达这些复杂的语句,简直就是折磨。在

相关问题 更多 >