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

Inherit field from one model to another model - Odoo v9 Community

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

具体来说,尝试从 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>

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

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

关于如何实现这个的任何想法?

提前致谢!

您遇到的问题是您正在继承 product.product 并且 link 使用 One2many 字段

再次返回它

如果您想将产品价格添加到 stock.move,只需删除扩展 product.product 的额外模型并制作 Many2one link,就像您在 [=14] 中所做的那样=] 模型除了模型名称是 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 模型已经有同名的 link 到 product.product) ,我只是把它放在那里向您展示相关字段的工作原理

stock.move 上的相关字段怎么样?

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

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