javascript - 如何在 Odoo 14 中搜索 res.partner 记录

标签 javascript python xml odoo

我想在确认销售订单时添加对 res.partner 中“电子邮件”字段的检查。

class SaleOrderExtend(models.Model):
    _inherit = 'sale.order'

    def action_confirm(self):
        partner = self.env['res.partner'].search(['partner_id', '=', self.partner_id])
        if partner.email == '':
            raise UserError(_("""Email is empty ."""))
    ....

但是我得到了这个错误:上面的异常是以下异常的直接原因:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 639, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 315, in _handle_exception
    raise exception.with_traceback(None) from new_cause
IndexError: tuple index out of range

请问怎么了? 谢谢。

最佳答案

首先您的搜索域错误。它应该是特殊逻辑运算符的列表,如字符串和三元组(具有 3 个值的元组或列表)。

我现在不会详细描述域语法,因为您的代码只有一个简单的错误:您的三元组应该在列表中:

self.env['res.partner'].search([('partner_id', '=', self.partner_id)])
# or as lists in list
self.env['res.partner'].search([['partner_id', '=', self.partner_id]])

其次,此搜索不起作用,因为 res.partner 模型中没有 partner_id 字段,并且 self.partner_id 是一个记录集不是 ID,您在 Many2one 字段中搜索时需要它。最后,您需要找到您正在确认的订单的合作伙伴。

您不需要搜索它,因为在本例中它已经是 self 的属性。

    def action_confirm(self):
        if not self.partner_id.email:
            raise UserError(_("""Email is empty ."""))

一些优化提示:电子邮件地址可以为空,甚至可以仅为空格,因为它只是一个简单的字符串/字符字段。因此,请尝试也考虑到这一点:

    def action_confirm(self):
        if not self.partner_id.email or not self.partner_id.email.strip():
            raise UserError(_("""Email is empty ."""))

还有一点:可以一次确认多个订单,因此也请尝试考虑这一点:

    def action_confirm(self):
        not_valid_orders = self.filtered(
            lambda o: not o.partner_id.email or not o.partner_id.email.strip())
        if not_valid_orders:
            raise UserError(
                _("""Some orders have partners without email address"""))

关于javascript - 如何在 Odoo 14 中搜索 res.partner 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66653303/

相关文章:

javascript - 将自定义 HTML 分配给 page.content 后如何在 PhantomJS 中等待页面评估

javascript - Materializecss scrollspy throttle 不工作

xml - XSLT 遍历数组值

java - JAXB 删除不必要的嵌套 XML 标记

c# - 从 XML 文件的最后一个子级中选择值

javascript - ipcRenderer.send和sendSync无法从预加载到主要状态

python - 根据列的分数使用 Python 计算并集和交集

python - 如何正确塑造我的神经网络模型的数据?

python - 如何在特定日期范围内对 Pandas 列 DataFrame 中的某些值求和

javascript - 如何搜索数组属性中的项目?