Ich versuche, meine One2Many Datensätze durchlaufen, um Doppelarbeit zu vermeiden.Schleife durch One2Many Datensätze Odoo 10
class sales_target(models.Model):
_name = 'sales.target'
_description = 'Sales Target'
name = fields.Char(string='Name',required=True)
from_date = fields.Date(string='From Date',required=True)
to_date = fields.Date(string='To Date',required=True)
sales_team = fields.Many2one('crm.team',required=True)
sales_record_ids = fields.One2many('sales.target.record','sales_target_rec_id',string='Sales Record')
@api.one
def check_duplication(self,result):
count = 0
if self.sales_record_ids:
for record in self.sales_record_ids:
if result.id == record.sales_person_p_id:
count = 1
if count == 0:
self.write({'sales_record_ids':[(0,0,{'sales_person':result.name})]})
@api.one
def get_sales_person(self):
for res in self.sales_team.member_ids:
self.check_duplication(res)
Die andere Klasse ist als:
class sales_target_record(models.Model):
_name = 'sales.target.record'
sales_target_rec_id = fields.Many2one("sales.target")
sales_person = fields.Char(string='Sales Person',readonly=True,required=True)
sales_person_p_id = fields.Char(compute='get_value',store=True)
@api.onchange('sales_person')
@api.depends('sales_person')
def get_value(self):
res = self.env['res.partner'].search([('name','=',self.sales_person)])
self.sales_person_p_id = res[0].id
Nun, wenn ich die Taste am Schlagen ich noch doppelte Datensätze haben. Jedoch habe ich versucht, mit Namen und Dingen zu vergleichen, die gut arbeiten, aber ich kann nicht mit Namen vergleichen, weil es nicht korrekt ist, weil Namen gleich sein können, aber ID kann nicht. Diese Funktion war wie folgt:
@api.one
def check_duplication(self,result):
count = 0
if self.sales_record_ids:
for record in self.sales_record_ids:
if result.name == record.sales_person:
count = 1
if count == 0:
self.write({'sales_record_ids':[(0,0,{'sales_person':result.name})]})
Hoffnung für eine Anleitung zu diesem Thema.
Ich habe versucht, aber gleiches Problem –