首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不计算的计算字段和不起作用的默认值(odoo-12)

不计算的计算字段和不起作用的默认值(odoo-12)
EN

Stack Overflow用户
提问于 2019-04-05 04:05:09
回答 2查看 1.2K关注 0票数 0

我的模型中有这个字段和一个方法,该方法旨在检测many2one中的更改:

代码语言:javascript
复制
manytoone = fields.Many2one(comodel_name="product.template", string="Many to One",
                                required=False, )

cambio_realizado = fields.Boolean(string="Cambios en Many to One", default=False)

@api.onchange('manytoone')
def _detectar_cambio(self):
    self.cambio_realizado = True

No作用于布尔域中的default=False。始终以True开头。

另一个问题是no在计算字段中起作用:

代码语言:javascript
复制
@api.multi
def computer_function(self):
    self.computation = 243+234

    computation = fields.Float(string="Result: ", compute=computer_function, readonly=True)

结果是零..。总是在视图中。

标识ok,并且模型是继承的

我的班级和我的观点和技巧:

代码语言:javascript
复制
class CustomModule(models.Model):
    _inherit = 'sale.order'

    name = fields.Char('campos relacionales, decoradores onchange y funcion computar')

    manytoone = fields.Many2one(comodel_name="product.template", string="Many to One",
                                required=False, )

    cambio_realizado = fields.Boolean(string="Cambios en Many to One")

    @api.onchange('manytoone')
    def _detectar_cambio(self):
        self.cambio_realizado = True

    onetomany = fields.One2many(comodel_name="sale.order", inverse_name="manytoone",
                                    string="One to Many", required=False, )
    manytomany = fields.Many2many(comodel_name="sale.order",
                                     relation="sale_handler",
                                  column1="order_id", column2="order_handler_id",
                                  string="Many to Many", )

    @api.depends('computation')
    def computer_function(self):
        for record in self:
            record.computation = 300

    computation = fields.Float(string="Result: ", compute=computer_function, readonly=True)

<odoo>
<!-- Inherit Form View to Modify it -->
<record id="custom_view_custom" model="ir.ui.view">
    <field name="name">custom.view.custom</field>
    <field name="model">sale.order</field>
    <field name="inherit_id" ref="sale.view_order_form"/>
    <field name="arch" type="xml">

        <xpath expr="//sheet" position="inside">
            <group>
            <field name="manytoone"/>
            <field name="onetomany"/>
            <field name="manytomany"/>
            </group>
            <group>
                <field name="computation"/>
                <field name="cambio_realizado"/>
            </group>
        </xpath>

    </field>
</record>

</odoo>
EN

回答 2

Stack Overflow用户

发布于 2019-04-05 19:16:42

@api.one定义computer_function(自身):self.computation = 243+234

代码语言:javascript
复制
computation = fields.Float(string="Result: ", compute=computer_function, readonly=True)

在代码中使用@api.one

票数 0
EN

Stack Overflow用户

发布于 2019-04-06 10:13:15

1- onchnage,当您尝试创建新记录时,onchange会自动调用,然后cambio_realizado设置为true

代码语言:javascript
复制
@api.onchange('manytoone')
def _detectar_cambio(self):
    for o in self:
        if o.manytoone:
            o.cambio_realizado = True

2-在计算中,最好使用api.depends('somefield'),但下面的代码可能对您有用,请使用循环,不要使用只读

代码语言:javascript
复制
@api.multi
def computer_function(self):
    for o in self:
        o.computation = 243+234

computation2 = fields.Float(string="Result: ", compute=computer_function)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55524079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档