如何使用 Odoo 从表单字段获取值?

2024-04-16

我在表单视图中有这个字段:

<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(使用前将#替换为@)

如何使用 Odoo 从表单字段获取值? 的相关文章

  • 如何在 debian 64 位上正确安装 wkhtmltopdf?

    我正在尝试安装 wkhtmltopdf 但是当我这样做时 sudo dpkg i wkhtmltox 0 12 1 linux trusty amd64 deb I get Preparing to unpack wkhtmltox 0 1
  • Excel 中的 Odoo 图像

    我正在使用 xlsxwriter 创建一个 excel 文件 需要将我的公司徽标放入这些 excel 文件中 我一直在尝试使用 insert image 但没有成功 我想这就像将partner image解析到缓冲区中一样 但我卡住了 请帮
  • 在 odoo 中添加 Many2many 字段后“关系已存在”

    我定义了以下两个 odoo ORM 模型 class Weekday models Model name ludwik offers weekday name fields Char class Duration models Model
  • Odoo10 - 如何执行 JavaScript

    我一定做了一些完全错误的事情 odoo define my module popups function require use strict var ajax require web ajax var core require web c
  • 如何按条件隐藏表单上的编辑/创建按钮?

    我是一名新的 Odoo 开发人员 当我的表单进入自定义状态时 我需要隐藏编辑按钮 由于安全问题 我需要这个按钮 当我尝试为表单提供属性时 XML 中的这段代码不起作用
  • 跟踪代码中某个点的所有语句

    我正在尝试跟踪复杂的 Python 应用程序 OpenERP 中的调用和代码流 更复杂的是 OpenERP 有自己的继承系统 与普通的 Python 继承并行 我想做的是获得执行代码的完整列表 以及模块 函数名称 我尝试过 Eclipse
  • 达到虚拟实时时间限制(178/120秒)

    我使用的是ubuntu 16版本并运行Odoo erp系统12 0版本 在我的应用程序日志文件中 我看到信息显示 已达到虚拟实时时间限制 178 120 秒 它到底意味着什么以及它会对我的应用程序造成什么损害 另外我如何增加虚拟实时限制 它
  • 如何修复错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为 1

    我正在尝试在 VirtualBox 机器上全新安装的 Linux 上安装 odoo 我已按原样输入此处找到的命令 Odoo 开发阅读文档 http odoo development readthedocs org en latest ins
  • 在 Odoo 中创建新组

    我创建了一个新组 它是一个人员组 但是在查看元数据中 我创建的新组没有 XML ID 我在哪里可以找到 XML ID 或添加新组的 XML ID 即使在外部 ID 中也是如此菜单 我找不到 ID 如何创建或编辑自定义组 打开设置 gt 用户
  • 使用按钮打开另一个模块表单视图

    我正在尝试打开另一个模型表单视图 但收到错误外部 ID 未找到 在 py文件中 class ru assignments models Model name ru assignments class ru assignments sub m
  • 如何编写使用OpenERP ORM直接上传到Postgres数据库的Python脚本

    我需要在 Python 中编写一个 独立 脚本 仅使用 OpenERP 的 ORM 模块将销售税上传到数据库中的 account tax 表 我想做的是类似下面的伪代码 有人可以向我提供有关以下内容的更多详细信息 1 我需要设置什么sys
  • 在树视图 Odoo 13 外部添加按钮

    再会 有没有办法在 Odoo 的树视图上方添加一个按钮 我想每当用户单击按钮时运行一个函数 如果这不可能 你能帮我找到替代方案吗 这是我查看的代码
  • 元素 xpath 无法位于父视图中

    我需要自定义从销售模块中打印的字段 因此我创建了一个新模块并安装了它 我已经创建了一个 XML 文件 但出现以下错误 odoo tools convert ParseError Error while validating constrai
  • 使用 TransientModel 设置和获取 Odoo 存储数据

    我正在尝试在 odoo 中存储配置数据 我需要存储 3 个对 account journal 的引用 模型是在数据库中创建的 视图显示在配置基本菜单中 当我按下 应用 按钮时 数据存储在数据库中 但当我重新加载菜单时 数据不会显示 代码使用
  • 如何实现ODOO中“报价”和“销售订单”模块中的“通过电子邮件发送”功能?

    我正在 iOS 中开发 ODOO 应用程序 我想在ODOO的 报价 和 销售订单 模块中实现 通过电子邮件发送 功能 那么有没有什么API可以实现这个功能呢 或者我应该在 iOS 中以编程方式生成 PDF 并使用 MFMailCompose
  • 安装脚本退出并出现错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为 1 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我尝试安装时odoo server 我收到以下错误 error Setup script exited with error com
  • 如何在 odoo 中打印重复的 qweb 报告?

    我创建了一份运行良好的报告 现在我在表单的标题名称 打印重复 中创建了一个按钮 它将打印相同的报告 但是 当我点击 打印副本 按钮 我想在报告顶部打印 重复报告 截屏 https i stack imgur com Hiu67 png 单击
  • 自定义模块未显示在应用程序列表中

    我正在尝试将模块从 odoo 8 安装到 odoo 9 我刚刚将整个文件夹复制到addonsodoo 9 中的文件夹并希望我能以某种方式installodoo 9 中的模块 但它没有显示在要安装的应用程序列表中 odoo 的结构是否有任何变
  • 出现错误 /usr/bin/env: 节点:权限被拒绝

    我已经在我的服务器 Centos 上完成了 ODOO v9 安装 一切都已安装成功 登录页面也可以正常工作 但登录后我收到一个包含以下错误的页面 usr bin env node Permission Denied 我尝试更改权限 但我的问
  • 如何使用python创建从openerp自动发送邮件的程序

    如何使用python创建从openerp自动发送邮件的程序 我已经创建了 openerp 模块 当生成客户端 ID 时 我正在尝试向客户端发送邮件 在 sale 文件夹中的 sale py 中 当将潜在客户转换为客户时 我想向客户发送邮件

随机推荐