我在表单视图中有这个字段:
<field name="value"/>
Run Code Online (Sandbox Code Playgroud)
当有人想要添加新值时,我想从字段中获取值,这可能是我$_GET['value']在PHP中可能做的.
简单的例子:
我希望,当用户插入一个值时,程序检查它是否大于所有值的总和,并打印如下错误消息:
无法添加该值,因为它大于所有值的总和
到目前为止我写过这个:
<?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>
Run Code Online (Sandbox Code Playgroud)
from openerp import models
from openerp import fields
class test(models.Model):
_name = "test.odoo"
value = fields.Integer()
Run Code Online (Sandbox Code Playgroud)
你不能在与数据库层隔离的odoo中考虑表单视图.
表单中的数据立即(并自动)保存在数据库中.您可以稍后使用ORM方法访问它.
我不知道你想要达到什么目标,所以我很难给你一个具体的例子.每个表单视图都与单个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
Run Code Online (Sandbox Code Playgroud)
这是您验证表单的方式:
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!")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11438 次 |
| 最近记录: |