在Odoo 14中使用purchase.order.line中的搜索功能时出错
我有这样一个动作:在Odoo 14中使用purchase.order.line中的搜索功能时出错,odoo,odoo-14,Odoo,Odoo 14,我有这样一个动作: . . . <record id="confirm_action" model="ir.actions.server"> <field name="name">Confirm</field> <field name="binding_model_id" ref="my_module.model_purchase_order_line"/
. . .
<record id="confirm_action" model="ir.actions.server">
<field name="name">Confirm</field>
<field name="binding_model_id" ref="my_module.model_purchase_order_line"/>
<field name="model_id" ref="my_module.model_purchase_order_line"/>
<field name="state">code</field>
<field name="code">
action = records.confirm_line()
</field>
</record>
. . .
以下是错误:
Odoo服务器错误
回溯(最近一次呼叫最后一次):
文件“/home/odoo/odoo/odoo/addons/base/models/ir_http.py”,第237行,在
结果=request.dispatch()
文件“/home/odoo/odoo/odoo/http.py”,第683行,发送中
结果=self.\u调用函数(**self.params)
文件“/home/odoo/odoo/odoo/http.py”,第359行,在调用函数中
返回选中的\u调用(self.db、*args、**kwargs)
文件“/home/odoo/odoo/odoo/service/model.py”,第94行,在包装器中
返回f(数据库名,*args,**kwargs)
文件“/home/odoo/odoo/odoo/http.py”,第347行,在checked_调用中
结果=自身终点(*a,**kw)
文件“/home/odoo/odoo/odoo/http.py”,第912行,在调用中
返回自方法(*参数,**kw)
文件“/home/odoo/odoo/odoo/http.py”,第531行,作为响应
响应=f(*参数,**kw)
文件“/home/odoo/odoo/addons/web/controllers/main.py”,第1733行,运行中
结果=操作。运行()
文件“/home/odoo/odoo/odoo/addons/base/models/ir_actions.py”,第629行,运行中
res=运行者(运行自身,评估上下文=评估上下文)
文件“/home/odoo/odoo/odoo/addons/base/models/ir_actions.py”,第498行,在运行操作代码中
safe_eval(self.code.strip(),eval_context,mode=“exec”,nocopy=True)#nocopy允许返回“action”
文件“/home/odoo/odoo/odoo/tools/safe_eval.py”,第346行,在safe_eval中
raise VALUETERROR(“%s:“%s”在计算时\n%r%”(ustr(类型(e)),ustr(e),expr))
例外情况
上述异常是以下异常的直接原因:
回溯(最近一次调用上次):文件
“/home/odoo/odoo/odoo/http.py”,第639行,在异常处理中
返回super(JsonRequest,self)。\u handle\u exception(exception)文件“/home/odoo/odoo/odoo/http.py”,第315行,在\u handle\u exception中
引发异常。使用来自新的“”的“”回溯(无)“”导致ValueError::“'int'对象不可订阅”而
评估“操作=记录。确认行()”
我想做的只是获取与我之前选择的行具有相同产品的采购订单行的数据。我做错了什么
它给了我此行的错误
purchase\u orders=self.env['purchase.order.line'].search(['product\u id.id','=',line.product\u id.id])
最后一个代码部分在某些方面似乎是错误的。首先,你不会得到订单,而是订单行。因此,重命名变量purchase\u orders
。其次,您不需要域左侧的.id
。第三,域的语法错误,因为域必须是特殊逻辑运算符和/或3元组的列表。但现在它是一个由两个字符串和一个整数组成的列表
因此,最后该方法应如下所示:
def确认行(self):
对于line in self:
采购订单行=self.search([('product\u id','=',line.product\u id.id)])
#这里必须做点什么,因为现在
#什么也不会发生
非常感谢您的及时回复!这正是我需要的。
class purchase_order_line_inherit(models.Model):
_inherit = "purchase.order.line"
def confirm_line(self):
for line in self:
purchase_orders = self.env['purchase.order.line'].search(['product_id.id','=',line.product_id.id])