2017-11-16 11 views
1

重複を避けるためOne2Manyレコードをループしています。私はまだ重複レコードを持っているボタンを押すいたときに今ループスルーOne2ManyレコードOdoo 10

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 

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)   

他のクラスが通りです。しかし、私は名前と比較しようとしたが、うまくいくが、名前は同じであるが、IDはできないので、正しくないので名前と比較することはできない。その機能は次のとおりです。

@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})]})  

答えて

0

は、あなたはそれが正常に動作nameのために、何かがあなたのif条件と間違っているかもしれないという事実から結論この

@api.multi 
def check_duplication(self,result): 
    if self.sales_record_ids:    
     for record in self.sales_record_ids: 
      if not result.name == record.sales_person:       
       self.write({'sales_record_ids':[(0,0,{'sales_person':result.name})]})  
+0

私はみましたが、同じ問題 –

0

のように試すことができます。

sales_person_p_idのタイプはcharですが、整数:result.idと比較しているようです。

ifの両方のオブジェクトが同じtypeであることを確認しましたか?

例えばsales_person_p_id = fields.Integer(compute='get_value',store=True)経由(sales_person_p_id整数フィールドを作成したり、オブジェクトを比較する前に型キャストのいくつかの種類を実行しよう。

関連する問題