2017-10-09 29 views
1

PARTNER_ID我想訪問res.partner形式我的模塊中。但我想要的是,而不是客戶(partner_id),它只在特定類的下拉列表中顯示'pet_name'。我應用了一個函數,這是工作。但是,它適用於完全res.partner。但我不想要這個。那麼,任何人都可以爲這個問題提供解決方案或條件?如何添加條件特殊類顯示字段拖放 - 向下除了從res.partner形式

我的代碼是在這裏:

類customer_information(models.Model):

_inherit = "res.partner" 

@ api.multi

def name_get(self): 

    result = [] 

    for record in self: 

     name = '[' 

     if record.pet_name: 

      name += record.pet_name + ']' + ' ' + record.name 

     else: 

      name += '] ' + record.name 

     result.append((record.id, name)) 

    return result 

pet_name = fields.Char( 「寵物名稱」)

dog_cat = fields.Selection([('dog', 'Dog'), ('cat', 'Cat')], string="Dog/Cat") 

species = fields.Many2one('species.pet', string="Species") 

pet_size = fields.Selection([('large', 'Large'), ('medium', 'Medium'), ('small', 'Small')], string="Size") 

class mach ine_weight(models.Model):

_name = 'machine.weight' 

machine_id = fields.Many2one('sale.pet', string='Machine Weight', ondelete='cascade', index=True, 

          copy=False) 

pet = fields.Many2one('res.partner') 

weight = fields.Integer() 

price = fields.Integer() 

回答

1

我們需要通過上下文和檢查方面的關鍵在name_get()方法。如果我們獲得了這個上下文,那麼就引發你的邏輯,否則核心邏輯就執

例如:

在XML側更新代碼:

<field name="pet" context="{'need_pet': True}"> 

現在檢查在方法的上下文鍵。

@api.multi 
def name_get(self): 
    if self._context and self._context.has_key('need_pet'): 
     result = [] 
     for record in self: 
      name = '[' 
      if record.pet_name: 
       name += record.pet_name + ']' + ' ' + record.name 
      else: 
       name += '] ' + record.name 
      result.append((record.id, name)) 
     return result 
    return super(customer_information, self).name_get() 
+0

謝謝Odedra ... –