代码之家  ›  专栏  ›  技术社区  ›  holydragon

在Odoo 14中使用purchase.order.line的搜索功能时出错

  •  0
  • holydragon  · 技术社区  · 5 年前

    我有一个这样的动作:

    . . .
    <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>
    . . .
    

    我的模型中有这段代码:

    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])
    

    错误如下:

    Odoo服务器错误 追溯(最后一次通话): 文件“/home/odoo/odoo/odoo/addons/base/models/ir_http.py”,第237行,位于_dispatch中 结果=request.dispatch() 文件“/home/odoo/odoo/odoo/http.py”,第683行,正在发送中 结果=自我_call_function(**self.params) 文件“/home/odoo/odoo/odoo/http.py”,第359行,位于_call_function中 返回checked_call(self.db、*args、**kwargs) 文件“/home/odoo/odoo/odoo/service/model.py”,第94行,包装器中 返回f(dbname、*args、**kwargs) 文件“/home/odoo/odoo/odoo/http.py”,第347行,在checked_call中 结果=自身终点(*a,**kw) 文件“/home/odoo/odoo/odoo/http.py”,第912行,in 呼叫 返回self.方法(*args,**kw) response_frap中的文件“/home/odoo/odoo/http.py”,第531行 响应=f(*args,**kw) 文件“/home/odoo/odoo/addons/web/controllers/main.py”,第1733行,正在运行中 结果=action.run() 文件“/home/odoo/odoo/odoo/addons/base/models/ir_actions.py”,第629行,正在运行 res=runner(run_self,eval_context=eval_context) 文件“/home/odoo/odoo/odoo/addons/base/models/ir_actions.py”,第498行,位于_run_action_code_multi中 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 ValueError('%s:“%s”,同时计算%r'%(ustr(type(e)),ustr(e),expr)) 例外情况

    上述异常是以下异常的直接原因:

    回溯(最后一次调用):文件 “/home/odoo/odoo/odoo/http.py”,第639行,在_handle_exception中 返回super(JsonRequest,self)_handle_exception(异常)文件“/home/odoo/odoo/odoo/http.py”,第315行,位于_handle_exception中 引发异常。new_cause值中的with_traceback(None)错误:<类“TypeError”>:“‘t’对象不可下标” 正在评估“action=records.confirm_line()”

    我想做的只是获取与我之前选择的行具有相同产品的采购订单行的数据。我做错了什么?

    它给了我这行的错误 purchase_orders = self.env['purchase.order.line'].search(['product_id.id','=',line.product_id.id]) .

    0 回复  |  直到 5 年前
        1
  •  2
  •   CZoellner    5 年前

    最后一个代码部分在某些方面似乎是错误的。首先,你不会得到订单,而是订单行。因此,重命名变量 purchase_orders 其次,你不需要 .id 在域的左侧部分。第三,域的语法错误,因为域必须是特殊逻辑运算符和/或3元组的列表。但现在它是一个由2个字符串和一个整数组成的列表。

    最后,该方法应该看起来像:

    def confirm_line(self):
        for line in self:
            purchase_order_lines = self.search([('product_id','=',line.product_id.id)])
            # here something has to be done, because right now
            # nothing will happen at all
    
    推荐文章