Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python bsi.production.order没有属性';isbn';-奥多v8-新api_Python_Openerp_Odoo 8 - Fatal编程技术网

Python bsi.production.order没有属性';isbn';-奥多v8-新api

Python bsi.production.order没有属性';isbn';-奥多v8-新api,python,openerp,odoo-8,Python,Openerp,Odoo 8,我有两门课: 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 = fie

我有两门课:

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.production.order,我通过order\u lines字段访问bsi.production.order.lines

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

这是我的方法:

@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.production.order
,但我有约束装饰器,应该处理它


有什么想法吗?

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

@api.constraints('order\u line','order\u line.qty','order\u line.isbn'))
def检查_数量(自身):
对于rec in self:
如果记录订单行:
对于记录订单行中的行:
#这里isbn与rec一致,而不是rec,因为rec是记录
如果line.qty>line.isbn.qty\u可用:
提出警告((“数量无效”))

您在定义
ISBN
bsi.production.order.lines
域内
的字段中的问题似乎是\u ISBN
在您的模型中的任何地方都没有定义HI,它是在product.product上定义的,它实际上在模型本身上工作得很好,但在方法上却不工作,但为什么要添加域
域=”[('is_isbn','=',True)]“
is_isbn
字段未在模型中的任何位置定义。它在product.product上定义,但正如我所说,在模型本身(bsi.production.order.lines)上正常工作这只是一个过滤器,isbn是product.productOK的一个主要问题,如果line.qty>rec.isbn.qty可用:,在这里,
rec
是对象
bsi.production.order
,那么您必须将其更改为
如果line.qty>line.isbn.qty可用:
,并从装饰程序中删除
@api.multi
>@api.constraints,dependens,…因为这是默认的,所以早些时候是我的错,非常感谢:),很好