2017-02-27 4 views
0

使用名の検索を希望しますが、以下の例は機能しません。odooでname_searchを使用する9

タグ1 1234

タグ2 2568

タグ3 0369

タイプ036の後、私は、タグ3を取得したいです!

class MyTags(models.Model): 
     _name = "my.tags" 
     _description = "Tags" 

     name = fields.Char(required=True) 
     color = fields.Integer(string='Color Index') 


     @api.multi 
     def name_get(self): 
      result = [] 
      for record in self: 
       name = '[' + str(record.color) + ']' + ' ' + record.name 
       result.append((record.id, name)) 
      return result 


@api.model 
    def name_search(self, name, args=None, operator='ilike', limit=100): 
     args = args or [] 
     recs = self.browse() 
     if name: 
      recs = self.search([('color', '=', name)] + args, limit=limit) 
     if not recs: 
      recs = self.search([('name', operator, name)] + args, limit=limit) 
     return recs.name_get() 

たとえば上記の種類の後に正常に動作または、例えば、正確にスキャンします。 0369タグ3を返しますが、タイプの後など。 036は返されません。

答えて

0

このような検索を有効にするには、likeまたはilike演算子を使用する必要があります。それはでなければなりません。より具体的な検索パターンが必要な場合は、=likeまたは=ilikeを使用することもできますが、今はその例がありませんので、Odoo docを参照してください。