我正在使用odoo 10e。我想要做的就是我想設置裏面fields_view_get
方法Odoo - 如何從後端設置域名過濾器
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
res = super(Customer, self).fields_view_get(
view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
doc = etree.XML(res['arch'])
if view_type == 'tree':
if self.env.user.partner_id.parent_id.id is False:
id = self.env.user.id
else:
id = self.env.user.partner_id.parent_id.id
doc.attrib['domain'] = "[('custodians','='," + str(id) + ")]"
for node_form in doc.xpath("//tree"):
node_form.attrib['duplicate'] = '0'
res['arch'] = etree.tostring(doc)
for node_form in doc.xpath("//form"):
node_form.attrib['duplicate'] = '0'
res['arch'] = etree.tostring(doc)
return res
這就是我所做的嘗試域標準。但它不工作。你可以看到爲什麼我想從後端設置域,因爲我必須根據條件設置user_id。
請讓我知道如果我做錯了或有什麼更好的方法。
編輯
我已經定義託管領域遵循
custodians = fields.Many2one('res.users', string="Custodian", domain=[('groups_id', 'in', [12])],
readonly=[('readonly_custodian', '=', True)])
實際上當過一的loggedIn用戶創建Customer
記錄,我們把他作爲該Customer
保管人和所有我想做的事是當用戶再次登錄時,他應該能夠看到他和他的父母監護人記錄
你應該很少需要重寫'fields_get'。你究竟想達到什麼目的? – travisw
我想從後端動態地在樹視圖上添加域過濾器。所以我可以有基於條件的域名過濾器 – Ancient
看到這個檢查下的所有東西'if view_type =='tree''。這是我想要在域 – Ancient