我收到一个错误"在_get_report_values中map(lambda x:x.ref,docs.account_invoice_ids((或",".join(类型错误:序列项0:应为str实例,但找到了bool"。
data['test'] = docs.type == 'type1' and ', '.join(
map(lambda x: x.reference, docs.acc)) or ', '.join(
map(lambda x: x.name, docs.acc))
请帮忙吗?
很抱歉回复太晚,我实际上没有太多关于你想做什么的信息,但这可能是一个解决方案:
data['test'] = ', '.join(map(lambda x: x.reference, docs.acc)) if docs.type == 'type1' else ', '.join(map(lambda x: x.name, docs.acc))
如果文档类型为type1
,则使用此语法加入x.reference
,否则加入x.name
编辑:正如@sabik所指出的,您还可以使用生成器而不是map函数来简化语句。如果整个集合的文档类型相同,您可以通过以下方式简化您的声明:
data['test'] = ', '.join(x.reference for x in docs.acc) if docs.type == 'type1' else ', '.join(x.name for x in docs.acc)
此外,为了可读性,您也可以尝试以下操作:
doc_attr = "reference" if docs.type == "type1" else "name"
data["test"] = ", ".join(getattr(x, doc_attr) for x in docs.acc)
否则,如果每个";x〃;你可以使用
data['test'] = ', '.join(x.reference if x.type == 'type1' else x.name for x in docs.acc)