我添加 'LOCATION_ID' 字段树视图res.user到用户连接到某个位置如何筛选与动态字段odoo-10
类ResUser(models.Model): _inherit ='res.users '
current_location_id=fields.Many2one('physical.location',string="Current Loction")
allowed_location_ids=fields.Many2many('physical.location',string="Allowed Location")
我想筛选只与current_location_id = user_current_location_id
<filter string="My visits" name="filter_my_visits"
domain="[('current_location_id','=',current_location_id)]"/>
其给出该错误消息中的访问
Uncaught Error: Failed to evaluate search criterions:
{"code":400,"message":"Evaluation Error","data":{"type":"local_exception","debug":"Local evaluation failure\nNameError: name 'current_location_id' is not defined\n\n{\"domains\":[[],\"[('current_location_id','=',current_location_id)]\"],\"contexts\":[{\"lang\":\"en_US\",\"tz\":false,\"uid\":1,\"params\":{\"action\":354,\"min\":1,\"limit\":80,\"view_type\":\"list\",\"model\":\"visit.visit\",\"menu_id\":241,\"_push_me\":false}},{}],\"group_by_seq\":[]}"}}
鉴于唯一可用的领域直接调用的UID郎...等 所以我试图重写阅读方法来更新背景,但它似乎并没有在视图中进行更新,仍然给未定义 'current_location_id'
@api.multi
def read(self, fields=None, load='_classic_read'):
ctx = self.env.context.copy()
ctx.update({ 'user_current_location_id':self.env.user.current_location_id.id})
return super(Visit,self.with_context(ctx)).read(fields=fields,load=load)
visit_tree_view
<record id="visit_visit_tree_view" model="ir.ui.view">
<field name="name">visit.visit.tree</field>
<field name="model">visit.visit</field>
<field name="arch" type="xml">
<tree string="Visits">
<field name="name" />
<field name="date"/>
<field name="visit_type" />
<field name="patient_id"/>
<field name="hcp_id"/>
<field name="current_location_id" />
<field name="user_current_location_id"/>
<field name="severity"/>
<field name="state"/>
</tree>
</field>
</record>
六坐行动
<record id="visit_visit_act" model="ir.actions.act_window">
<field name="name">Visit</field>
<field name="res_model">visit.visit</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_filter_my_visits':1}</field>
<field name="search_view_id" ref="view_visit_filter"/>
</record>
这里是我做过什么:
@api.multi
def vsit_action(self):
ctx = self.env.context.copy()
ctx.update({'search_default_current_location_id': self.env.user.current_location_id.id,
'user_current_location_id': self.env.user.current_location_id.id})
return {
'name': 'Visit',
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'visit.visit',
'type': 'ir.actions.act_window',
'context': dict(ctx),
'search_view_id': self.env.ref('eroyal_visit.view_visit_filter').id
}
过滤器:
<filter string="My visits" name="filter_my_visits"
domain="[('current_location_id', '=', context.get('user_current_location_id'))]"/>
the visit action
<record id="visit_visit_act" model="ir.actions.server">
<field name="name">Visit</field>
<field name="model_id" ref="model_visit_visit"/>
<field name="state">code</field>
<field name="code">
action = env['visit.visit'].vsit_action()
</field>
</record>
的default_search_current_id工作正常,但过滤filter_my_visits不过滤的观点current_location_id =没有,而其正确设置在背景 坦克
我不明白你的过滤器。你想实现什么?如果您想按给定位置过滤,只需将该字段放入搜索视图。例如:在客户树中,您可以搜索标签,但不必键入searchterm并按下回车键(快速搜索),您必须键入searchterm,选择要搜索的“字段”(在我的示例标签中;用鼠标或箭头键),然后按回车。 – CZoellner
我更新了问题,我想设置默认过滤器的问题,我不想给它静态值既不希望用户输入值,我想设置它的值为user_current_location_id, –