以下是我一直在做的事情:
<field name="of_num" domain="[('etat','=','Terminé')]"/>其中'of_num‘是many2one字段,'etat’是char类型的函数字段。
但这似乎不起作用,我的下拉列表中仍然有所有的记录。
我也尝试了一些其他文本,没有unicode字符,但仍然一样。
我还尝试使用'ilike‘操作符,并尝试在python代码中使用字段定义,但没有机会。
编辑的
我已经找出了问题的根源:字段'etat‘是计算出来的,但没有存储,因为我使用的是'store=false’。
它正在与store=True一起工作。不过,我不想存储它,因为每次加载视图时都需要计算我的值。
谁能帮我做到这一点,而不必储存我的价值?谢谢
发布于 2014-04-08 10:24:23
我找到的唯一解决方案是使用一个布尔字段,它在每次计算函数时都会被存储和更新(函数字段'etat')。
发布于 2014-04-09 06:23:04
使用fnct_search。对于函数字段,有一个名为'fnct_search‘的参数,它返回搜索域条件。例如
_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)
https://stackoverflow.com/questions/22933095
复制相似问题