将字段从一个模型继承到另一个模型 - Odoo v9社区

时间:2016-10-18 04:02:07

标签: python openerp odoo-9 qweb

我正在尝试通过模块将表中的字段添加到另一个表中。

具体而言,尝试从product.product price字段继承字段,将其添加到stock.move模型中。

所以,我已经在我正在制作的这个新模块中创建了一个模型。

像这样:

# -*- coding: utf-8 -*-

from openerp import models, fields, api
import openerp.addons.decimal_precision as dp 

class product(models.Model):
    _inherit = 'product.product'
    _rec_name = 'price_unidad'

    price_unidad = fields.One2many('product.product','price', string="Precio", readonly=True)

 class StockMove(models.Model):
    _inherit = 'stock.move'

    price_unity = fields.Many2one("product", string="Precio", readonly=True)

然后,就我的观点而言:

<?xml version="1.0" encoding="utf-8"?> 
<openerp>
<data>

<record id="view_stock_move_tree" model="ir.ui.view">
    <field name="name">Stock Move Price Tree</field>
    <field name="model">stock.move</field>
    <field name="inherit_id" ref="stock.view_move_picking_tree"/>
    <field name="arch" type="xml">
        <field name="state" position="before">
            <field name="price_unity"/>
        </field>
    </field> 
</record>

<record id="view_stock_move_form" model="ir.ui.view">
    <field name="name">Stock Move Price Form</field>
    <field name="model">stock.move</field>
    <field name="inherit_id" ref="stock.view_move_picking_form"/>
    <field name="arch" type="xml">
        <field name="state" position="before">
                <field name="price_unity"/>
            </field>
    </field>
</record>

</data>
</openerp>

我不太确定,但是当我从表单视图中调用它时,它似乎进入了一个无休止的循环。

所以,我真的不知道它有什么问题。

关于如何实现这一目标的任何想法?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您遇到的问题是,您继承product.product并使用One2many字段再次链接回来

如果您要将产品价格添加到stock.move,只需删除扩展product.product的额外模型,并在您的stock.move模型中创建像您一样的Many2one链接,模型名称为product.product

class StockMove(models.Model):
    _inherit = 'stock.move'

    price_unity = fields.Many2one("product.product", string="Precio", readonly=True)

这会选择整个对象,但如果您只想要价格,那么您必须使用相关字段

class StockMove(models.Model):
    _inherit = 'stock.move'

    product_id = fields.Many2one("product.product", "Product")
    price_unity = fields.Float(string="Precio", store=True, readonly=True, related="product_id.price")

注意:您不需要product_id(stock.move模型已经有一个带有相同名称的product.product的链接),我只是把它放在那里向您展示相关字段工作

答案 1 :(得分:1)

stock.move上的相关字段呢?

class StockMove(models.Model):
    _inherit = "stock.move"

    price_unity = fields.Float(
        string="Precio", related="product_id.price", readonly=True)