最近在使用odoo14的时候,发现odoo的attr里面对于attrs={"invisible":[('state','=','draft'),('sponsor','=',uid)]} 这种写法并不支持,期初以为是自己语法有问题,后来反复查验之后发现不是语法的问题,而是odoo14默认在attrs属性里面不支持对于uid这种变量的解析,所以在执行编译的时候会报错。
那么,如果我们想要实现这种在当前用uid进行比较实现隐藏的效果,应该如何处理呢?
经过我反复试验和验证之后,发现之所以不能通过uid进行比较是因为在odoo的底层控制没有实现对uid这个参数的兼容,所以就导致了这一问题,通过重写代码可以实现这一效果,具体的路径是在:
把代码做如下更改,便可支持兼容uid,
def transfer_node_to_modifiers(node, modifiers, context=None, current_node_path=None):
# Don't deal with groups, it is done by check_group().
# Need the context to evaluate the invisible attribute on tree views.
# For non-tree views, the context shouldn't be given.
if node.get('attrs'):
# 解决attrs 不能解析uid属性的问题
if 'uid' in node.get('attrs'):