odoo中xml文件field标签eval属性中需要使用python的random.randint()函数,应该在什么地方导入random
时间: 2024-03-13 08:42:56 浏览: 81
在 Odoo 中,如果需要在 XML 文件的 `field` 标签的 `eval` 属性中使用 Python 的 `random.randint()` 方法,需要在相关的 Python 文件中导入 `random` 模块。
具体来说,可以在该模块对应的 `*.py` 文件中,通过 `import random` 语句导入 `random` 模块。例如,以下代码片段展示了如何在 `models.py` 文件中导入 `random` 模块:
```python
# models.py
import random
from odoo import models, fields, api
class MyModel(models.Model):
_name = 'my.model'
random_number = fields.Integer(compute='_compute_random_number')
@api.depends('some_field')
def _compute_random_number(self):
for record in self:
record.random_number = random.randint(0, 100)
```
在上述代码中,我们在 `models.py` 文件中导入了 `random` 模块,并在 `MyModel` 类的 `compute` 方法中调用了 `random.randint()` 方法来生成随机整数。在 XML 文件中,我们可以使用 `field` 标签的 `eval` 属性来调用该方法,例如:
```xml
<!-- my_model.xml -->
<record model="ir.ui.view" id="my_model_form_view">
<field name="name">my.model.form</field>
<field name="model">my.model</field>
<field name="arch" type="xml">
<form>
<group>
<field name="some_field" />
<field name="random_number" eval="record._compute_random_number()" />
</group>
</form>
</field>
</record>
```
在上述 XML 文件中,我们使用 `eval` 属性调用了 `MyModel` 类的 `compute` 方法,并将计算结果赋值给 `random_number` 字段。
阅读全文