python-3.x - 有没有办法检查 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
解决方案
请使用以下代码进行检查
@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,并且在您的代码中,您正在检查创建记录后的条件,因此搜索结果始终为真。
推荐阅读
- java - 为跑步比赛编写一个数组
- graph - 如何使用janusgraph中的自定义函数计算边的权重?
- python - 用numpy在python中绘制分段函数
- javascript - 带有可替换变量的字符串(相当于 php 的 sprintf)
- c# - 如何创建包含两个连接的嵌套 LINQ 语句
- android - 在 Jetpack 导航中,如何知道哪个动作触发了我的片段
- c - 如何在 C 中编写优化逻辑以减少循环?
- r - 将名称传递给函数是否有一致的指导?以 data.table 为例
- python - Matplotlib 试图通过基本方程画一个圆( x**2 + y**2 = 9)
- php - 在 PHP 中解析 Microsoft XML