如何动态设置字段属性(限制)?

问题描述 投票:0回答:1

我有一个One2many字段,需要设置限制,我可以将静态数字设置为record_ids = fields.One2many('root.model', 'name' ,limit=10 )

这将仅显示10条记录。

但是现在我想为用户设置此字段以更改其限制。

我将其属性更改为limit = lambda self: self._record_limit(),并将文件设置为record_limit = fields.Integer(default=10)

    stock_ids = fields.One2many('bs.stock.material.details', 'name', limit= lambda self:self._record_limit())
    record_limit = fields.Integer(default=10)

def _record_limit(self):
    return self.record_limit

希望我可以通过设置record_limit字段的数量来调整o2m字段的显示数量。

例如,如果我未设置record_limit,则o2m始终在列表中显示10条记录。如果将其设置为20,则o2m可以显示20条记录。

但我收到此错误:

  File "D:\odoo\odoo11_boshown\odoo-11.0\odoo\models.py", line 1481, in search
    res = self._search(args, offset=offset, limit=limit, order=order, count=count)
  File "D:\odoo\odoo11_boshown\odoo-11.0\odoo\models.py", line 3810, in _search
    limit_str = limit and ' limit %d' % limit or ''
TypeError: %d format: a number is required, not function

如何动态设置此限制?

python odoo-11
1个回答
0
投票

您无法在odoo中设置One2many字段的动态限制。您可以使用默认方法来显示特定记录。如果可以为显示记录提供多个记录static,则只有两种方法。否则,您可以在One2many字段记录中添加默认方法或对应用过滤器使用域。

在您的代码中,您使用限制属性的方式错误。limit属性仅接受整数值或数字。但是您正在尝试通过迭代。

© www.soinside.com 2019 - 2024. All rights reserved.