Odoo 13中的瞬态模型未返回正确的结果

问题描述

我正在尝试显示res.partner的相关文件(如果从fields.Many2one('res.partner')字段中选择了成员)记录或文件(如果从fields.Many2one('file'中选择了文件) )字段),然后在

中返回相关记录
One2many field like this: 
    (self.return_line.create({
                'file_id': rec.id,'return_id': self.id
            }))

它正在调试模式下获得结果,并且还在数据库模型中获得结果,该模型是瞬态的,但是在第一次单击按钮时未写入结果。而且,如果我再次使用不同的many2one字段进行搜索,则它将在以前搜索的One2many中返回结果。这个完全相同的功能在Odoo 11中正常工作,但是在Odoo 13中表现出奇怪的差异,我不了解这种行为。 这是我的搜索功能:

class FileSearch(models.TransientModel):
    _name = 'file.search'
    _description = "File Search"
    
    file_id = fields.Many2one('file','File Number',domain="[('state','!=','cancel')]")
    membership_id = fields.Many2one('res.partner',string='Member No',domain="[('is_member','=',1)]")
    
    return_line = fields.One2many('return.line','return_id','Initial Request')
    
    def key(self,priority):
        priority_dict = {
            1: 'name',2: 'membership_id',3: 'tracking_id',}
        return priority_dict[priority]
    
    def value(self,priority):
        priority_dict = {
            1: self.file_id.name,2: self.membership_id.ref,3: self.tracking_id,}
        return priority_dict[priority].strip()
    
    
    def search_related_file(self):
        self.return_line.unlink()
    
        priority_list = [self.file_id,self.membership_id,self.tracking_id,self.member_id]
        priority = 0
        record = []
    
        if not any(priority_list):
            raise ValidationError(_('Must populate one of the above field for search.'))
    
        for rec in priority_list:
            if not rec:
                priority = priority + 1
            elif rec:
                priority = priority + 1
                break
    
        if priority == 4:
            member_id = self.env['res.partner'].search([('cnic',self.member_id)])
            if member_id:
                record = self.env['file'].search([('membership_id',member_id.id)])
        else:
            record = self.env['file'].search([(self.key(priority),self.value(priority))])
            # record = self.env['file'].search([('membership_id',self.membership_id.ref)])
    
        if record:
            for rec in record:
                self.return_line.create({
                    'file_id': rec.id,'return_id': self.id
                })
    
        return {
            'type': 'ir.actions.do_nothing'
        }

 

它给了我以前搜索的结果。例如,如果我从file_id字段中搜索并选择第一个文件,它不会返回任何内容,但是如果我再次使用列表中的第二个文件选项进行搜索,那么它会在one2many字段中给出第一个文件的结果,我尝试调试它给出的代码正确的记录,但不会在向导中返回正确的记录。我无法理解此行为,因为完全相同的功能在版本11中可以正常工作。任何想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...