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, если налог))) ]]