python - 如何动态设置字段属性(限制)?
问题描述
我有一个需要设置限制的 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
我希望我可以通过设置字段的数量来调整o2m字段的显示数量record_limit
。
例如,如果我不设置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
如何动态设置此限制?
解决方案
您不能在 odoo 中设置 One2many 字段的动态限制。您可以使用默认方法来显示特定记录。如果可以给出多个记录static
用于显示记录,只有两种方法。否则,您可以为 One2many 字段记录中的应用过滤器添加默认方法或使用域。
在您的代码中,您以错误的方式使用限制属性。limit 属性只接受整数值或数字。但是您正在尝试传递可迭代的。
推荐阅读
- git - 需要为 yarn add jest 提供密码
- dashboard - 动态设置 SingeStat 仪表控件的最大值
- git - 通过git部署时如何忽略文件夹内容而不删除
- mysql - Mysql - 从子句将变量传递给子查询
- windows - 有没有办法获取所有已安装程序的安装路径?
- javascript - 为什么我的 JS 函数在 Chrome 开发控制台中没有返回任何结果?
- python - 在 cv2.warpAffine 中找不到所需的参数“范围”(位置 2)
- mysql - 如何恢复 MySQL 密码?
- opengl - 访问顶点着色器中的缓冲区(不使用 SSBO)
- c - for 循环和模运算符