2016-01-29 31 views
0

在我的search_count條件中添加many2many字段後,收到了預期的單例錯誤。將Many2many字段添加到搜索條件後出現Singleton錯誤

該結構由3個類別,工作,位置和員工組成。我想要做的是獲得每個地點每個工作的員工數量。

這工作與XML中的many2many部件預期:

(字符串參數除外)

class job(models.Model): 
    _inherit    = 'hr.job' 

    rel_locations   = fields.Many2many(comodel_name='hr.locations') 

    num_location_employees = fields.Integer(compute='_set_location_employees') 

    def _set_location_employees(self): 
    for rec in self: 
     rec.num_location_employees = self.env['hr.employee'].search_count([('locations', '=', 3)]) 

它給我的工作與員工的位置,id爲3號的列表。

然而,改變的3 id來

('locations', '=', rec.rel_locations.id) 

後我得到

預期單:hr.locations(3,4)

這裏是至關重要的位置類

class locations(models.Model): 
    _name   = 'hr.locations' 

    employee  = fields.One2many(comodel_name='hr.employee', inverse_name='locations') 
    rel_jobs  = fields.Many2many(comodel_name='hr.job') 

    name   = fields.Char(...) 

我仍然很新的這一點,任何幫助將不勝感激。提前致謝。

回答

0

您只能使用點符號(。)來訪問單個記錄,並且您有多個記錄。檢查,說現場訪問

試圖在多個記錄,讀取或寫入字段將引發 錯誤的部分documentation

rec.rel_locations是一個ORM one2many,其中包含2條記錄到hr.locations模型。你首先獲取每個這些記錄的ID,然後創建您的域是這樣的:

(「位置」,「中」,[rel_location_id1,rel_location_id2])

欲瞭解更多信息,請查看文檔的部分我已經發布,也:

1 2

+0

這是一個信息豐富的答案,它幫助我瞭解我做錯了什麼。我對我的問題的解決方法完全關閉。所以我最終取消了這個。感謝您的詳細回覆。 – huaa

0
  1. 您應該使用IDS代替ID
  2. 在您的域名使用的代替=

就像這樣:

( '位置', '中',rec.rel_locations.ids)

讓我知道,如果它的工作原理。

+0

我只是嘗試這樣做,看來我仍然得到這個問題。我有一種感覺,它與每個位置記錄中的工作清單有關。該問題僅在我將條目添加到第二個位置記錄中的作業列表後纔出現。我會盡量縮小事業的範圍。感謝您花時間回覆。 – huaa

相關問題