我正在尝试从 one2many 行字段生成 RML 报告中的列表。有sale.order
类和sale.order.line
(这个与另一个存储税名的类有关)。
所以在 rml 报告中我尝试了这样的事情:
[[ ', '.join(list.append(x.name) for x in l.tax_id) ]]
其中 l 等同于order_line
(此字段与sale.order.line
类相关)并且 tax_id 与税表相关,我需要在其中获取所有税名并将其附加到字符串。在 rml 中,我不能简单地定义 list 然后尝试一些 for 附加它,因为它给了我不正确的语法错误。
在尝试了那条线之后,我得到了这个错误:
TypeError: descriptor 'append' requires a 'list' object but received a 'unicode'
所以然后我尝试x.name
用 list() 包装,然后我得到了这个错误:
TypeError: append() takes exactly one argument (0 given)
我也尝试使用 lambda,但也无法从中创建列表,它会输出生成器对象,如果我用 lambda 表达式包装list()
,那么它将输出函数对象。很明显我做错了什么,但我不知道如何简单地获取一个列表,然后我可以从中创建字符串?
更新 我也试过这个:
[[ ', '.join(map(lambda x: x.name, l.tax_id)) ]]
但它只适用于一个order line
. 如果有多个,则显示最后一行结果(忘记前面的结果)。所以它不创建列表是一样的。
样本数据(简化)
税表
|id|name|
1 | tax1
2 | tax2
3 | tax3
销售订单(作为我刚刚展示的 one2many 的 order_line)
|id|order_line|
|1 |3,4|
销售订单行
|id|tax_id|
|3 |1,2
|4 |2,3
因此,为具有这些订单行和税收的此类销售订单提供此样本,它应该输出以下内容:
tax1, tax2, tax3
(不能多次输出同一个税名)
目前它的输出如下:
tax2, tax3