我有Odoo stock addon&#39> view_stock_history_report_tree 视图:
<tree string="Stock Value At Date" create="0" delete="0">
<field name="location_id" invisible="1"/>
<field name="product_id" invisible="1"/>
<field name="move_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="date"/>
<field name="source"/>
<field name="quantity" sum="# of Products "/>
<field name="inventory_value" sum="Total Value"/>
</tree>
如果总和不等于0 ,我想隐藏计算数量字段。我试着通过写:
将一个attrs添加到数量字段<field name="quantity" sum="# of Products " attrs="{'invisible': [('quantity', '=', 0)]}"/>
但没有任何反应。貌似attrs并不是在这个领域工作。我不明白如何通过使用attrs来达到计算数量字段。
示例:
我想隐藏 Persona V 分组字段和 Horizon Zero Dawn 分组字段。
答案 0 :(得分:0)
问题是你在告诉Odoo:
如果列数量等于0,则生成列数invisible
的值。
所以你隐藏了该列的所有零。
但首先,看看这个,以防万一:
你不能使树视图的列不可见,行为
attrs
与表单视图不同。我的意思是,当你 根据条件,添加attrs
使字段不可见 两种观点中的行为都不同:表单视图
如果满足条件并且该字段必须是不可见的,那么它就是 消失,标签和价值是不可见的。
树状视图
如果满足条件且该字段必须不可见,则仅 值是不可见的,但不是标签(在本例中是列)。
因此,您始终会看到quantity
列,只有一些行会显示空值。
修改强>
所以我想你想要隐藏 Persona V 和 Horizon Zero Dawn 组,因为他们的记录数量总和为零,不是吗?
然后从树视图的模型继承并修改其read_group
方法。这对你有用:
@api.model
def read_group(self, domain, fields, groupby, offset=0, limit=None,
orderby=False, lazy=True):
# If user has grouped the tree view by location_id and product_id...
if u'location_id' in groupby and u'product_id' in groupby:
ids_to_show = []
# Put here your code to fill in ids_to_show with the IDs of the records you want to show
...
# Then, make the domain more restrictive:
domain[0].append([u'id', u'in', [ids_to_show]])
# The domain will automatically remove the groups with no
# representation. For example, if the result of ids_to_show is [2, 7, 35],
# and those three records have as product Last of Us (x2) and Call of
# Duty, the agrupations of Persona V and Horizon Zero Dawn will be
# invisible as they don't have records inside.
return super(YourModel, self).read_group(
domain, fields, groupby, offset=offset, limit=limit,
orderby=orderby, lazy=lazy)