Python (RML) - создать список и затем объединить его элементы в строку?

Я пытаюсь создать список в отчете RML из полей one2many строк. Есть sale.order класс и sale.order.line (этот связан с другим классом, который хранит названия налогов).

Итак, в отчете RML я попытался что-то вроде этого:

[[ ', '.join(list.append(x.name) for x in l.tax_id) ]]

Где я эквивалентен order_line(это поле связано с sale.order.line class) и tax_id связаны с таблицей налогов, где мне нужно получить имена всех налогов и добавить их в строку. В rml я не могу просто определить список, а затем попробовать его, чтобы добавить его, потому что он дает мне неправильную синтаксическую ошибку.

Попробовав эту строку, я получил эту ошибку:

TypeError: descriptor 'append' requires a 'list' object but received a 'unicode'

Итак, я попытался обернуть x.name с list(), и тогда я получил эту ошибку:

TypeError: append() takes exactly one argument (0 given)

Я также пробовал с лямбда-выражением, но не смог создать из него список, он бы вывел объект-генератор, если бы я обернул лямбда-выражение list(), тогда он будет выводить функциональные объекты. Понятно, что я делаю что-то не так, но я не могу понять, как просто получить список, из которого я мог бы потом создать строку?

Обновление Я также попробовал это:

[[ ', '.join(map(lambda x: x.name, l.tax_id)) ]]

Но это работает правильно только с одним order line, Если их больше одного, то отображаются результаты последних строк (о предыдущих). Так что это то же самое, что он не создает список.

Пример данных (упрощенно)

Налоговая таблица

|id|name|
 1 | tax1
 2 | tax2
 3 | tax3

Заказ на продажу(как order_line как one2many, который я только что показал, как это)

|id|order_line|
|1 |3,4|

Строка заказа на продажу

|id|tax_id|
|3 |1,2
|4 |2,3

Таким образом, давая этот образец для такого заказа на продажу с этими строками заказа и налогами, он должен вывести это

tax1, tax2, tax3 (он не должен выводить одно и то же налоговое название более одного раза)

И в настоящее время это выводит так:tax2, tax3

1 ответ

Решение

Попробуйте [[ ', '.join(list(set(tax.name для строки в o.order_line для налога в line.tax_id, если налог))) ]]

Другие вопросы по тегам