首页 > 解决方案 > 有没有办法检查 Many2one res.users 记录是否已经存在

问题描述

我正在创建自己的模块来管理 odoo 中的代理帐户。我确实需要验证 res.user 是否已经在代理中,以避免创建具有相同 res.user 帐户的代理

class Agent(models.Model):
    _name = 'agent.a'

    agent_id = fields.Many2one(
        'res.users',
        string='Agent',
        default=lambda s: s.env.user)
    agent_image = fields.Binary(string='Photo')
    local_id = fields.One2many('local.n', 'Localisation_Af', string='Localisation')
@api.model
    def create(self, vals):
        res = super(Agent, self).create(vals)
        modelObj = self.env['agent.a']

        for record in res:
          rec = modelObj.search([('agent_id', '=', record.agent_id.login)])
            if rec:
               raise ValidationError(('Already exists'))
            else:
                return res

但结果总是 True

标签: python-3.xodoo-12

解决方案


请使用以下代码进行检查

@api.model
def create(self, vals):
    if vals.get('agent_id',False):
        modelObj = self.env['agent.a']
        rec = modelObj.search([('agent_id', '=', vals.get('agent_id',False))])
        if rec:
           raise ValidationError(('Already exists'))
    return super(Agent, self).create(vals)

请注意,我们无法在不是正确方法的 create 中循环 res,并且在您的代码中,您正在检查创建记录后的条件,因此搜索结果始终为真。


推荐阅读