如何解决错误预期的单例:purchase.order.line(57、58、59、60、61、62、63、64)

时间:2018-08-09 10:03:54

标签: python-2.7 odoo-9

我正在使用odoo版本9,并且创建了一个模块来定制采购订单报告。我希望在报告中显示的字段中包括文章的供应商参考,但是当我添加显示该字段的代码<span> <t t-esc="', '.join([str(x.product_code) for x in o.order_line.product_id.product_tmpl_id.seller_ids])"/>时   但是当我要开始打印报告时会显示错误
QWebException: "Expected singleton: purchase.order.line(57, 58, 59, 60, 61, 62, 63, 64)" while evaluating "', '.join([str(x.product_code) for x in o.order_line.product_id.product_tmpl_id.seller_ids])"

PS:我在模块购买中没有任何改变。 我不知道该如何解决此问题,请帮忙吗?

2 个答案:

答案 0 :(得分:1)

找到了多个卖家ID。这就是为什么您在这里获得ID数量的原因。 Purchase.order.line(57,58,59,60,61,62,63,64)。您必须选择其中一个ID。要查看结果,只需尝试以下方法:

o.order_line[0].product_id.product_tmpl_id.seller_ids

如果您想在报告中显示所有这些卖方ID,请申请xml循环。

答案 1 :(得分:1)

这是因为您的采购订单有多个订单行,而您希望该订单只有一个订单行。

o.orderline.product_id.product_tmpl_id.seller_ids

仅在有一条订单行时可用,否则您将在每条订单行中循环。在这里o.orderline将具有多个订单行,您可以从多个订单行获取product_id。如果您尝试使用o.orderline [0] .product_id.product_tmpl_id.seller_ids,它将可以使用,但只会获得第一个订单行详细信息。为了获得所有订单行详细信息,您需要遍历它。