【问题标题】:odoo add validation for double fieldodoo 为双字段添加验证
【发布时间】:2021-04-21 03:08:59
【问题描述】:

我有这个 odoo py

class CrmProject(models.Model):
_name='crm.project'
customer_id = fields.Many2one('res.partner','Customer')
project_product_id = fields.Many2one('crm.project.product','Project Product')

当 customer_id 和 project_product_id 与 crm.project 数据库中的值相同时,如何验证并显示警告?因此必须先检查数据库,然后如果它与 customer_id AND project_product_id 输入中的值相同,则显示警告。
例如:

Database table crm.project
customer_id = 1
project_product_id = 2

只有在输入时才会产生警告:

customer_id = 1
project_product_id = 2

除此之外不会创建任何警告

我已尝试过此操作,但未创建警告(2021 年 4 月 25 日更新)

@api.model
def create(self,vals):
    vals['name'] = self.env['ir.sequence'].next_by_code('crm.project')
    res = super(CrmProject,self).create(vals)
    # Add code here
    #res= super(CrmProject,self).create(vals)
    customer_id = vals.get('crm.project.customer_id')
    project_product_id = vals.get('crm.project.project_product_id')
    get_customer_id = self.env['crm.project'].search([('customer_id','=',customer_id)])
    get_project_product_id = self.env['crm.project'].search([('project_product_id','=',project_product_id)])
    if get_customer_id and get_project_product_id:
        raise UserError(_('The project has already been set before'))
    else:
        return res

任何帮助将不胜感激

【问题讨论】:

  • 你能更详细一点并添加一个例子吗?两个提到的字段背后都有不同的模型/关系,它们怎么可能是相同的值?
  • 我做了一些更新
  • 啊一些典型的约束。现在这个问题可以理解了。
  • 对不起,我之前解释错了。我又更新了。
  • 是的,好吧,仍然是一个经典的约束。如果已经存在具有相同客户和项目产品的“项目”,则显示警告。

标签: odoo odoo-8 odoo-10 odoo-9


【解决方案1】:

你可以在你的数据库中创建约束:

create unique index name_your_constraint
on crm_project (customer_id, project_product_id);

【讨论】:

  • 能否请您进一步解释一下,也许是举例?
猜你喜欢
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
相关资源
最近更新 更多