我在表单视图中有这个字段:
<field name="value"/>
当有人想要添加新值时,我想从该字段获取值,就像我可能会做的那样$_GET['value']
in PHP.
简单的例子:
我希望当用户插入一个值时,程序检查它是否大于所有值的总和并打印一条错误消息,例如:
无法添加该值,因为它大于所有值的总和
到目前为止我已经写过这个:
view.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="action_test" model="ir.actions.act_window">
<field name="name">Insert</field>
<field name="res_model">test.odoo</field>
<field name="view_mode">form,tree</field>
</record>
<record id="view_tree_test" model="ir.ui.view">
<field name="name">Inset.tree</field>
<field name="model">test.odoo</field>
<field name="arch" type="xml">
<tree string="T">
<field name="create_uid"/>
<field name="value" sum="Total Sum"/>
</tree>
</field>
</record>
<record id="view_from_test" model="ir.ui.view">
<field name="name">Inset.form</field>
<field name="model">test.odoo</field>
<field name="arch" type="xml">
<form string="T_Form">
<group>
<field name="value"/>
</group>
</form>
</field>
</record>
<menuitem name="Test Module" id="main_menu_test" sequence="3"/>
<menuitem name="TEST" id="sub_menu" parent="main_menu_test"/>
<menuitem action="action_test" id="action_menu" parent="sub_menu" />
</data>
</openerp>
test.py
from openerp import models
from openerp import fields
class test(models.Model):
_name = "test.odoo"
value = fields.Integer()
您不能脱离数据库层来思考 odoo 中的表单视图。
表单中的数据立即(自动)保存在数据库中。您稍后可以使用以下方式访问它ORM 方法 https://www.odoo.com/documentation/8.0/reference/orm.html#common-orm-methods.
我不知道你到底想要实现什么,所以我很难给你一个具体的例子。每个表单视图都与一个 ORM 模型相关联。如果您想在保存数据之前/之后立即对数据执行某些操作,您通常会子类化 ORM 模型并覆盖其方法之一。
class Foo(models.Model):
_inherit = 'other.foo'
@api.model
def create(self, vals):
record = super(Foo, self).create(vals)
print "A new Foo with name={} and bar={} has been created!".format(
record.name,
record.bar,
)
return record
这是验证表单的方法:
from openerp import models, fields, api, exceptions
class test(models.Model):
_name = 'test.odoo'
value = fields.Integer()
@api.one
@api.constrains('value')
def _check_value(self):
if self.value > 25:
raise exceptions.ValidationError("The value is too large!")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)