Унаследовать поле от одной модели к другой модели - Сообщество Odoo v9
Я пытаюсь добавить поле из таблицы в другую таблицу через модуль.
В частности, пытаясь унаследовать поле от 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 ответа
Проблема в том, что вы наследуете product.product
и вернуться к нему снова с One2many
поле
Если вы хотите добавить цену товара в stock.move
просто удалите дополнительную модель, которая расширяет product.product
и сделайте ссылку на Many2one, как вы сделали в своем stock.move
модель за исключением того, что название модели 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 с тем же именем), я просто поместил ее там, чтобы показать вам, как работают связанные поля
Как насчет смежной области на stock.move
?
class StockMove(models.Model):
_inherit = "stock.move"
price_unity = fields.Float(
string="Precio", related="product_id.price", readonly=True)