首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenERP域: char比较

OpenERP域: char比较
EN

Stack Overflow用户
提问于 2014-04-08 09:36:01
回答 2查看 221关注 0票数 0

以下是我一直在做的事情:

代码语言:javascript
运行
复制
<field name="of_num" domain="[('etat','=','Terminé')]"/>

其中'of_num‘是many2one字段,'etat’是char类型的函数字段。

但这似乎不起作用,我的下拉列表中仍然有所有的记录。

我也尝试了一些其他文本,没有unicode字符,但仍然一样。

我还尝试使用'ilike‘操作符,并尝试在python代码中使用字段定义,但没有机会。

编辑的

我已经找出了问题的根源:字段'etat‘是计算出来的,但没有存储,因为我使用的是'store=false’。

它正在与store=True一起工作。不过,我不想存储它,因为每次加载视图时都需要计算我的值。

谁能帮我做到这一点,而不必储存我的价值?谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-04-08 10:24:23

我找到的唯一解决方案是使用一个布尔字段,它在每次计算函数时都会被存储和更新(函数字段'etat')。

票数 0
EN

Stack Overflow用户

发布于 2014-04-09 06:23:04

使用fnct_search。对于函数字段,有一个名为'fnct_search‘的参数,它返回搜索域条件。例如

代码语言:javascript
运行
复制
_columns = {
'a':fields.float('A'),
'b':fields.float('B'),
'total_fn': fields.function(_total, fnct_search=_total_search, string='Total'),
}
def _total(self, cr, uid, ids, name, arg, context=None):
    res = {}
    for obj in self.browse(cr, uid, ids, context):
       res[obj.id] = obj.a + obj.b
    return res

def _total_search(self, cursor, user, obj, name, args, domain=None, context=None):
    ids = set()
    for cond in args:
        amount = cond[2]
        cr.execute("select id from your_table having sum(a,b) %s %%s" % (cond[1]),(amount,))
        res_ids = set(id[0] for id in cr.fetchall())
        ids = ids and (ids & res_ids) or res_ids
    if ids:
        return [('id', 'in', tuple(ids))]
    return [('id', '=', '0')]

这里,_total返回要为字段total_fn显示的值,fnct_search返回搜索所需的元组列表。所以,每当我们提出这个论点('total_fn','=',1500)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22933095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档