首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从继承模型Odoo v9社区调用字段

从继承模型Odoo v9社区调用字段
EN

Stack Overflow用户
提问于 2016-10-15 16:57:00
回答 1查看 341关注 0票数 0

让我解释一下我想做什么。

stock模块上,当您导航到任何操作(选择)类型(它是一个树或窗体视图)时,显示的一些字段来自product.product,例如name

现在,模型product.product有一个名为price的字段,因此,我需要显示stock.picking移动的产品价格。

由于stock.picking模型没有继承price字段,所以我创建了一个小模块,从product.product继承price,然后在stock.picking上显示它。

它是stockproduct之外的第三个模块。

现在,在我的models.py中我声明:

代码语言:javascript
复制
# -*- coding: utf-8 -*-

from openerp import models, fields, api

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

    @api.onchange('name','product_id','move_line_tax_ids','product_uom_qty')

    price_unit = fields.Float( digits_compute=dp.get_precision('Product Price'), string='Price')

在我的view.xml中,我将这个字段添加到stock.picking

代码语言:javascript
复制
<?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.picking</field>
    <field name="inherit_id" ref="stock.vpicktree"/>
    <field name="arch" type="xml">
        <field name="state" position="before">
            <field name="price_unit"/>
        </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.picking</field>
    <field name="inherit_id" ref="stock.view_picking_form"/>
    <field name="arch" type="xml">
        <field name="state" position="before">
                <field name="price_unit"/>
            </field>
    </field>
</record>

</data>
</openerp>

每次我尝试运行它时,它都会将我抛到控制台上:

代码语言:javascript
复制
2016-10-15 05:23:44,821 21578 ERROR argentina werkzeug: Error on request:
Traceback (most recent call last):
File "/home/kristian/.virtualenvs/odoo_danisan/lib/python2.7/site-packages/werkzeug/serving.py", line 177, in run_wsgi
execute(self.server.app)
File "/home/kristian/.virtualenvs/odoo_danisan/lib/python2.7/site-packages/werkzeug/serving.py", line 165, in execute
application_iter = app(environ, start_response)
File "/home/kristian/odoov9/odoo-9.0/openerp/service/server.py", line 246, in app
return self.app(e, s)
File "/home/kristian/odoov9/odoo-9.0/openerp/service/wsgi_server.py", line 184, in application
return application_unproxied(environ, start_response)
File "/home/kristian/odoov9/odoo-9.0/openerp/service/wsgi_server.py", line 170, in application_unproxied
result = handler(environ, start_response)
File "/home/kristian/odoov9/odoo-9.0/openerp/http.py", line 1495, in __call__
return self.dispatch(environ, start_response)
File "/home/kristian/odoov9/odoo-9.0/openerp/http.py", line 1644, in dispatch
ir_http = request.registry['ir.http']
File "/home/kristian/odoov9/odoo-9.0/openerp/http.py", line 365, in registry
return openerp.modules.registry.RegistryManager.get(self.db) if self.db else None
File "/home/kristian/odoov9/odoo-9.0/openerp/modules/registry.py", line 355, in get
update_module)
File "/home/kristian/odoov9/odoo-9.0/openerp/modules/registry.py", line 386, in new
openerp.modules.load_modules(registry._db, force_demo, status, update_module)
File "/home/kristian/odoov9/odoo-9.0/openerp/modules/loading.py", line 334, in load_modules
force, status, report, loaded_modules, update_module)
File "/home/kristian/odoov9/odoo-9.0/openerp/modules/loading.py", line 237, in load_marked_modules
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
File "/home/kristian/odoov9/odoo-9.0/openerp/modules/loading.py", line 123, in load_module_graph
load_openerp_module(package.name)
File "/home/kristian/odoov9/odoo-9.0/openerp/modules/module.py", line 331, in load_openerp_module
__import__('openerp.addons.' + module_name)
File "/home/kristian/odoov9/odoo-9.0/openerp/modules/module.py", line 61, in load_module
mod = imp.load_module('openerp.addons.' + module_part, f, path, descr)
File "/home/kristian/odoov9/motostion_addons/stock_move_price/__init__.py", line 7, in <module>
from . import models
File "/home/kristian/odoov9/motostion_addons/stock_move_price/models/__init__.py", line 1, in <module>
from . import models
File "/home/kristian/odoov9/motostion_addons/stock_move_price/models/models.py", line 10
price_unit = fields.Float( digits_compute=dp.get_precision('Product Price'), string='Price')
         ^
SyntaxError: invalid syntax

对我如何做到这一点有什么想法吗?

我希望我已经解释过了,如果你需要进一步的解释,请问我。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-15 17:27:57

尝试使用以下代码:

替换

代码语言:javascript
复制
price_unit = fields.Float( digits_compute=dp.get_precision('Product Price'), string='Price')

使用

代码语言:javascript
复制
price_unit = fields.Float(string='Price', digits=dp.get_precision('Product Price'))

并在“导入”部分写下一行。

代码语言:javascript
复制
import openerp.addons.decimal_precision as dp

然后重新启动Odoo服务器并升级您的自定义模块。

编辑:

替换

代码语言:javascript
复制
_inherit = 'stock.move'

使用

代码语言:javascript
复制
_inherit = 'stock.picking'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40061786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档