如何解决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 举报,一经查实,本站将立刻删除。