2017-03-06 73 views
1

我有這種方法,每次在Odoo v9社區中將新車模型添加到fleet.vehicle類中時,都會創建一個新的stock.location基於字段創建stock.location - Odoo v9社區

class fleet_vehicle(models.Model): 
_inherit = 'fleet.vehicle' 

@api.onchange('model_id') 
def crear_location(self): 
    self.env['stock.location'].search([('name', '=', self.model_id)]) 
    self.env['stock.location'].create({'name': self.model_id}) 
    return crear_location 

location_id = fields.Many2one("stock.location", string="Almacén Origen", store=True, compute=crear_location) 

但是,在fleet.vehicle表單中的字段是隻讀的,由於某種原因,我的意思是,我無法選擇,也沒有創造任何,它只是在那裏。

我在這裏錯過了什麼?

編輯

我部分地通過將屬性readonly=Falselocation_id現場解決問題,UT依然,沒有任何創建stock.location

回答

1

有可能導致問題的三件事情:

1 /平變化在Odoo只返回警告,域或值。 請參閱this post以獲得更多信息

2/location_id具有'compute'屬性,'compute'通常與@ api.depends一起使用,而不是更改。 更多解釋請參考this post

3 /在Odoo V9,自我是記錄,你應該使用循環訪問單個記錄

你應該試試你這樣的代碼(如果使用平變化,沒有必要使用計算)

@api.onchange('model_id') 
def crear_location(self): 
    for record in self: 
     location = self.env['stock.location'].search([('name', '=', record.model_id)]) 
     if not location: 
      location = self.env['stock.location'].create({'name': record.model_id}) 
     record.location_id = location 

location_id = fields.Many2one("stock.location", string="Almacén Origen") 
+0

嗨,非常酷,但它是如何創建的?我應該將此方法添加到某個按鈕或某個按鈕嗎?,location_id字段不會顯示新的anthing,也不會使用此方法創建stock.location,我認爲您是對的,但是如何使用它? ,對不起,只是想知道,再次感謝您 – NeoVe

+0

這就是爲什麼我使用計算,我知道這是不正確的,但位置應創建時,我保存記錄以某種方式,我只是問,我應該打開一個新的題? – NeoVe

+0

要開一個新的問題,非常感謝你 – NeoVe

相關問題