在odoo中存储一个int

Storing an int in odoo

我想知道他们是否是一种在 odoo 中的某处存储整数而无需创建新对象的方法。我想保留一个数字,以便仅显示 ID 高于该数字的合作伙伴。但是我不想在 res.partner 的每条记录中都添加一个字段。我怎么能有一个数字我可以访问我的 xml 而不是 res.partner 的字段?

对于这种情况,您可以使用模型 ir.config_parameter。习惯方法 set_param() 和 get_param().

该参数将他的值保存为字符串,因此对于我的示例,它将被解析为整数。 xml ID 将是 my_module.test_parameter.

但是在视图中使用它有点棘手。一种方法是在模型的搜索视图中使用上下文 "signal" 的过滤器:

<filter name="my_filter" string="My Filter" context="{'search_by_parameter':1}" />

有了它,您可以覆盖模型的 search() 以在激活过滤器时使用参数:

def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
    context = dict(context or {})
    if 'search_by_parameter' in context:
        try:
            value = int(self.pool.get('ir.config_parameter').get_param(cr, uid, 'my_module.test_parameter'))
        except:
            value = 0
        args.append(('id', '>', value))
    return super(my_model, self).search(cr, uid, args, offset, limit, order, context, count)