将字段从一个模型继承到另一个模型 - 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)
我正在尝试通过模块将 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)