提高ValueError(“预期单例:%s”%self)ValueError:预期单例:product.pricelist()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提高ValueError(“预期单例:%s”%self)ValueError:预期单例:product.pricelist()相关的知识,希望对你有一定的参考价值。
我使用'product.pricelist'模型中的get_product_price_rule()函数。我的代码是:
price = self._get_display_price(product)
错误日志是:
File "/odoo/addons/sale/models/sale.py", line 875, in _get_display_price
final_price1, rule_id1 = self.order_id.pricelist_id.with_context(product_context).get_product_price_rule(product,self.product_uom_qty or 1.0, self.order_id.partner_id)
File "/odoo/addons/product/models/product_pricelist.py", line 264, in get_product_price_rule
self.ensure_one()
File "/odoo/odoo/models.py", line 4844, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: product.pricelist()
如何解决这个错误?我的目标是获得产品展示价格。我需要一个解决方案和建议。
您的问题似乎与销售订单上没有价格表相关,并且正如错误所述,它是预期的单一值。通常,这与记录集中的多个值相关,但同样适用于记录集中没有值的预期值。
因此,您的问题可以通过类似if检查self.order_id上的pricelist_id值来解决,或者您可以找到默认的public pricelist
来使用它来计算产品价格,或者只是在那里使用产品销售价格self.order_id.pricelist_id没有价值
默认情况下,Odoo中的方法使用@ api.multi装饰器进行修饰。
这意味着自身值是RecordSet的列表,而不是RecordSet,因此您有两个解决方案来解决此问题:
选项1:使用循环遍历RecordSet列表
for record in self:
price = record._get_display_price(product)
选项2:使用以下命令检查列表中是否只有一个RecordSet:
self.ensure_one()
您可以获得有关https://odoo-new-api-guide-line.readthedocs.io/en/latest/environment.html#recordset的更多文档
以上是关于提高ValueError(“预期单例:%s”%self)ValueError:预期单例:product.pricelist()的主要内容,如果未能解决你的问题,请参考以下文章
python/Pyqt5 - 如何在使用 ast 和获取 ValueError 时避免 eval:attemt 中的格式错误的字符串以提高代码安全性
Django 引发 ValueError: int() 的无效文字,在 POST 上以 10 为基数
解决方案ValueError: Some of types cannot be determined by the first 100 rows
解决方案ValueError: Some of types cannot be determined by the first 100 rows