序列项0:应为str实例,找到布尔(Odoo 14)



我收到一个错误"在_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)

相关内容

  • 没有找到相关文章

最新更新