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

maj*_*jid 1 openerp

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

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

这是我的代码:

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

    for record in self:
        if record.id:
            if record.status == 'open':
                raise ValidationError(_('You can not create new visit until patient checked out !' ))  
            else:
                res = self.status    
        else:
                res = self.status  

    return res            
Run Code Online (Sandbox Code Playgroud)

i'm*_*ble 5

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

self.env['your.model.name'].search([('patient_id', '=', patient_id), ('status', '=', 'open')])
Run Code Online (Sandbox Code Playgroud)

如果找到记录,则引发错误。这里为ex写一个代码。根据您的代码更改名称。

@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
Run Code Online (Sandbox Code Playgroud)