Унаследовать поле от одной модели к другой модели - Сообщество 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)
Другие вопросы по тегам