gpt4 book ai didi

python - bsi.product.order 没有属性 'isbn' - Odoo v8 - 新 api

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:40 25 4
gpt4 key购买 nike

我有这两门课:

class bsi_production_order(models.Model):
_name = 'bsi.production.order'

name = fields.Char('Reference', required=True, index=True, copy=False, readonly='True', default='New')
date = fields.Date(string="Production Date")
production_type = fields.Selection([
('budgeted','Budgeted'),
('nonbudgeted','Non Budgeted'),
('direct','Direct Order'),
], string='Type of Order', index=True,
track_visibility='onchange', copy=False,
help=" ")
notes = fields.Text(string="Notes")
order_lines = fields.One2many('bsi.production.order.lines', 'production_order', states={'finished': [('readonly', True)], 'cancel': [('readonly', True)]}, string="Order lines", copy=True)
print_orders = fields.One2many('bsi.print.order', 'production_orders', string="Print Orders")
warehouse_quantity = fields.Char(compute='quantity', string='Quantity per warehouse')

class bsi_production_order_lines(models.Model):
_name = 'bsi.production.order.lines'

production_order = fields.Many2one('bsi.production.order', string="Production Orders")
isbn = fields.Many2one('product.product', string="ISBN", domain="[('is_isbn', '=', True)]")
qty = fields.Integer(string="Quantity")
consumed_qty = fields.Float(string="Consumed quantity")
remaining_qty = fields.Float(string="Remaining quantity")

因此,从 bsi.product.order 中,我通过 order_lines 字段访问 bsi.product.order.lines。

我需要检查 isbn,它实际上是一种产品,检查库存位置有多少,然后将其与 order_lines 字段数量进行比较,看看是否有足够的数量。

这是我的方法:

@api.multi
@api.constrains('order_lines', 'order_lines.qty', 'order_lines.isbn')
def check_quantity(self):
for rec in self:
if rec.order_lines:
for line in rec.order_lines:
if line.qty > rec.isbn.qty_available:
raise Warning(('Quantity is invalid.'))

但是每次我点击这个按钮,它都会抛出我:

Odoo Server Error
Traceback (most recent call last):
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 546, in _handle_exception
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 583, in dispatch
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 319, in _call_function
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\service\model.py", line 118, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 316, in checked_call
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 812, in __call__
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\http.py", line 412, in response_wrap
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\addons\web\controllers\main.py", line 948, in call_button
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\addons\web\controllers\main.py", line 936, in _call_kw
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 268, in wrapper
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\.\openerp\api.py", line 399, in old_api
File "C:\Program Files (x86)\Odoo 8.0-20170914\server\openerp\addons\bsi\models\models.py", line 501, in check_quantity
AttributeError: 'bsi.production.order' object has no attribute 'isbn'

我知道 isbn 位于 bsi.production.order.lines 对象上,而不是 bsi.product.order 上,但我有应该处理的约束装饰器它。

有什么想法吗?

最佳答案

您正在访问订单记录而不是行:

@api.constrains('order_lines', 'order_lines.qty', 'order_lines.isbn')
def check_quantity(self):
for rec in self:
if rec.order_lines:
for line in rec.order_lines:
# here the isbn is in line not rec because rec is the record
if line.qty > line.isbn.qty_available:
raise Warning(('Quantity is invalid.'))

关于python - bsi.product.order 没有属性 'isbn' - Odoo v8 - 新 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46967585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com