在Odoo记录规则中调用Python方法获取动态用户ID的可行性
Python动态获取用户ID到记录规则的可行方案
完全可以通过Python方法动态获取用户ID,你给出的示例写法['|',('user_id','=',getuserid()),('user_id','=',False)]是合法且可行的。
核心说明:
- 原规则里的
user.id是静态引用用户ID的方式,而调用自定义的getuserid()函数属于动态获取逻辑——只要这个函数能正确返回当前用户的ID值(比如从请求会话、认证上下文或者数据库查询中提取),就能替代静态的user.id,让规则自动适配当前场景的用户。 - 执行规则时,Python会先调用
getuserid()函数拿到返回值,再将其填入规则条件中,最终生成符合要求的过滤规则。
简单的getuserid()实现示例:
比如从Flask会话中提取已登录用户的ID:
def getuserid(): from flask import session # 假设用户登录后,会话中存储了user_id字段 return session.get('user_id', False)
如果是Django环境,也可以从请求对象中获取:
def getuserid(): from django.contrib.auth import get_user from django.http import HttpRequest request = HttpRequest() current_user = get_user(request) return current_user.id if current_user.is_authenticated else False
内容的提问来源于stack exchange,提问作者shashank verma
相关产品推荐
相关产品推荐

