Openerp 如何根据odoo中的id和状态检查记录是否存在

Openerp 如何根据odoo中的id和状态检查记录是否存在,openerp,Openerp,如何在检查以前的记录是否未处于“打开”状态后,针对处于“打开”状态的患者创建新的检查记录。如果存在,则显示错误,否则创建新记录 下面的代码未正确检查“if record.id:”中的记录是否存在,因此直接引发错误消息 这是我的密码: @api.multi @api.Constraints('状态','患者id') def_检查状态(自我): res=[] 请自行记录: 如果记录.id: 如果record.status==“打开”: raise ValidationError(\在患者签出之前,您

如何在检查以前的记录是否未处于“打开”状态后,针对处于“打开”状态的患者创建新的检查记录。如果存在,则显示错误,否则创建新记录

下面的代码未正确检查“if record.id:”中的记录是否存在,因此直接引发错误消息

这是我的密码:

@api.multi
@api.Constraints('状态','患者id')
def_检查状态(自我):
res=[]
请自行记录:
如果记录.id:
如果record.status==“打开”:
raise ValidationError(\在患者签出之前,您无法创建新就诊!')
其他:
res=自我状态
其他:
res=自我状态
返回res

您必须首先获取所有患者和状态==打开的记录。 就这样,

self.env['your.model.name'].search([('patient_id', '=', patient_id), ('status', '=', 'open')])
如果找到记录,则引发错误。 这里有一个写代码的例子。更改名称根据您的代码

@api.multi
@api.constrains('status', 'patient_id')
def _checkstatus(self):
    res = []

    modelObj = self.env['your.model.name']
    for record in self:
        rec = modelObj.search([('patient_id', '=', record.patient_id), ('status', '=', 'open')])
        if rec:
            raise ValidationError(_('You can not create new visit until patient checked out !' ))  
        else:
            // write a login if there is not found any open record with patient

    return res

您必须首先获取patient和status==open的所有记录。 就这样,

self.env['your.model.name'].search([('patient_id', '=', patient_id), ('status', '=', 'open')])
如果找到记录,则引发错误。 这里有一个写代码的例子。更改名称根据您的代码

@api.multi
@api.constrains('status', 'patient_id')
def _checkstatus(self):
    res = []

    modelObj = self.env['your.model.name']
    for record in self:
        rec = modelObj.search([('patient_id', '=', record.patient_id), ('status', '=', 'open')])
        if rec:
            raise ValidationError(_('You can not create new visit until patient checked out !' ))  
        else:
            // write a login if there is not found any open record with patient

    return res

在Odoo中,评估约束时,记录已经创建/更新

这意味着,在您的情况下,您需要从查找数据中排除当前记录集(您想知道其他患者条目是否处于“打开”状态)

在此处引发错误将导致Odoo修改其事务数据,并阻止任何持久的修改

@api.multi
@api.Constraints('状态','患者id')
def_检查状态(自我):
#检索当前记录中的患者
患者检查=self.mapped('patient\u id')
重复项==self.search([('patient\u id','in',patients\u tocheck.id),('id','not in',self.id),('status','=','open'))
如果重复:
raise ValidationError(\在患者签出之前,您无法创建新就诊!')
#此外,您不需要返回任何值,Odoo只查看是否引发任何错误

在Odoo中,评估约束时,记录已经创建/更新

这意味着,在您的情况下,您需要从查找数据中排除当前记录集(您想知道其他患者条目是否处于“打开”状态)

在此处引发错误将导致Odoo修改其事务数据,并阻止任何持久的修改

@api.multi
@api.Constraints('状态','患者id')
def_检查状态(自我):
#检索当前记录中的患者
患者检查=self.mapped('patient\u id')
重复项==self.search([('patient\u id','in',patients\u tocheck.id),('id','not in',self.id),('status','=','open'))
如果重复:
raise ValidationError(\在患者签出之前,您无法创建新就诊!')
#此外,您不需要返回任何值,Odoo只查看是否引发任何错误

不客气^^请您将问题设置为已回答好吗?谢谢你^^^不客气^^你能把你的问题设定为已回答的吗?谢谢^^