我有一些模块可以扩展Odoo的附加功能.例如,my_module
扩展的模型crm
:
class Lead(models.Model):
_inherit = 'crm.lead'
# exmaple fields
field_1 = fields.Char(...)
field_2 = fields.Many2one(...)
# ... field 99
class Stage(models.Model):
_inherit = 'crm.stage'
# exmaple fields
field_1 = fields.Char(...)
field_2 = fields.Many2one(...)
# ... field 99
Run Code Online (Sandbox Code Playgroud)
同样的情况是其扩展模块hr
,product
等我需要做一些改变的车型.例如,在中my_module_1
,我需要更改几个字段(类型,关系)my_module_2
,仅删除几个字段等.当然,我还需要更改每个模块的视图.当然,我的自定义模型与不同应用程序/模块的模型有依赖关系.但我有必须存储的生产数据.我没有在Odoo中找到有关迁移(或模块同步)的任何信息.
我的问题是:在生产中更新模块/应用程序的最佳方法是什么(如果我们在模型和视图领域有很多变化)?提前致谢.
我和odoo 9一起工作.在系统中存在每种类型字段的render_value方法:
/odoo/addons/web/static/src/js/views/form_widgets.js
/odoo/addons/web/static/src/js/views/form_relational_widgets.js
Run Code Online (Sandbox Code Playgroud)
如何为所有表单使用我的自定义方法render_value(例如在FieldChar中)?以及如何为一个表单或一个模块使用特定的render_value?
我form_widgets.js
在我的模块中创建,但我不明白如何正确覆盖Field.
odoo.define('my_module.form_widgets', function (require) {
"use strict";
// what I should do here???
});
Run Code Online (Sandbox Code Playgroud)
你能提供一些小例子吗?预先感谢.
我在一个项目中看到了一段代码,其中写了以下内容:
move = Move.create({
'name': repair.name,
'product_id': repair.product_id.id,
'product_uom': repair.product_uom.id or repair.product_id.uom_id.id,
'product_uom_qty': repair.product_qty,
'partner_id': repair.address_id.id,
'location_id': repair.location_id.id,
'location_dest_id': repair.location_dest_id.id,
'restrict_lot_id': repair.lot_id.id,
})
moves |= move
moves.action_done()
Run Code Online (Sandbox Code Playgroud)
这里的含义是什么意思?
我在Project模块中有翻译问题.某些菜单项未翻译.可能是什么问题呢?
这里是project_view.xml
<!-- Top menu item -->
<menuitem name="Project"
id="base.menu_main_pm"
groups="group_project_manager,group_project_user"
icon="fa-calendar"
web_icon="project,static/description/icon.png"
sequence="50"/>
Run Code Online (Sandbox Code Playgroud)
在这里ru.po
#. module: project
#: model:ir.model,name:project.model_project_project
#: model:ir.model.fields,field_description:project.field_project_task_history_cumulative_project_id
#: model:ir.model.fields,field_description:project.field_project_task_project_id
#: model:ir.model.fields,field_description:project.field_report_project_task_user_project_id
#: model:ir.ui.view,arch_db:project.edit_project
#: model:ir.ui.view,arch_db:project.view_task_form2
#: model:ir.ui.view,arch_db:project.view_task_history_search
#: model:ir.ui.view,arch_db:project.view_task_project_user_search
#: model:ir.ui.view,arch_db:project.view_task_search_form
#: model:res.request.link,name:project.req_link_project
msgid "Project"
msgstr "??????"
Run Code Online (Sandbox Code Playgroud) Odoo 有三种类型的继承,我至少有那么多问题。
1.“正常”继承(_inherit)
这对我来说相对直观 - 但他们为什么不以 Pythonic 的方式做到这一点:
ChildClass(ParentClass):
Run Code Online (Sandbox Code Playgroud)
为什么他们有(看似等价的):
ChildClass(model.Model):
_inherit = 'module.parentclass'
Run Code Online (Sandbox Code Playgroud)
2. 扩展
这对我来说毫无意义(因为我不知道你为什么要使用它),下面是一个例子,但谁能给我一个实际的用例。 http://www.odoo.com/documentation/9.0/reference/orm.html#extension
3.委托(_inherits)
这对我来说也没有意义,它似乎是一个多子类化,但只是字段,而不是方法。
题
为什么 _inherit 存在,与普通子类化相比有什么好处/区别?
你什么时候/为什么要延长?我想我有一个想法,但我相信其他人可以表达得更清楚。
也许有点什么,为什么 _inherits
我的模型中有一些One2Many字段.我在视图中为树元素设置了limit = 5.但是如何将可能值(80-200-500等)的列表更改为我的自定义列表(例如:10-15-etc.)?
这是我的xml:
<!--
info about view:
<record model="ir.ui.view" id="view_my_id_employee_form">
<field name="name">hr.employee.property.form.inherit</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form" />
-->
<field name="adaptation_result_ids">
<tree default_order="date desc" limit="5">
<field name="name"/>
<field name="date"/>
</tree>
</field>
Run Code Online (Sandbox Code Playgroud)
也许在设置中使用Window Actions是可能的?
我尝试了不同的方法但都徒劳无功.你能解决我的问题吗?先感谢您.
我一直在尝试从.mdb数据库中提取数据并将其放入Odoo 8类列中.
这是我的.py文件
class attendance_biometric(osv.Model):
_name="attendance.biometric"
_rec_name='name'
_columns={
'fdate':fields.datetime('From Date'),
'tdate':fields.datetime('To Date'),
'code':fields.integer('Code'),
'name':fields.many2one('res.users','Employee Name', readonly=True),
'ref': fields.one2many('bio.data', 'bio_ref', 'Data'),
}
_defaults = {
'name': lambda obj, cr, uid, context: uid,
}
def confirm_submit(self, cr, uid, ids, context=None):
result=[]
DBfile = '/home/administrator/test.mdb'
conn = pyodbc.connect('DRIVER=MDBtools;DBQ='+DBfile)
cr = conn.cursor()
sql = '''
select InTime, OutTime, OutDeviceId, Duration from
AttendanceLogs '''
cr.execute(sql)
rows = cr.fetchall()
for row in enumerate(rows):
result.append(row)
raise osv.except_osv(_('Info'),_('Data : %s\n' % (result)))
Run Code Online (Sandbox Code Playgroud)
现在,当我点击提交按钮进行一些重新工作后,数据显示如下图所示
有人可以提供宝贵的意见吗?比如如何将这些值放入Odoo类列(我的意思是分配给类的字段)以及如何从两个表中获取列.
我在服务器上有一些错误
File "/home/odoo/odoo/odoo_8_test/addons/bus/bus.py", line 188, in poll
raise Exception("bus.Bus unavailable") Exception: bus.Bus unavailable
Run Code Online (Sandbox Code Playgroud)
因此,我在服务器上执行程序时丢失了上下文值和一些变量值.
是否可以在树视图中显示html?
例如,将strong添加到字符串<strong> MY STRING </ strong>
我尝试使用widget ="html",但强大的标签是可见的!
的.py
@api.depends('name')
def _get_html(self):
self.html_text = "<strong>" + str(self.name) + "</strong>"
html_text = fields.Char(compute='_get_html')
Run Code Online (Sandbox Code Playgroud)
.XML
<field name="html_text"/>
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个简单的继承模块,以便我可以在新的机会形式中添加更多字段,但odoo不喜欢我的代码.我是Odoo和Python的新手,所以不要怪我:(
mymodule.py:
from openerp.osv import fields, osv
class crm_lead_mymodule(osv.osv):
_inherit = 'crm.lead'
_columns = {
'product_type' : fields.selection( [('basic', 'Basic'),('pro', 'Pro'),], ),
}
Run Code Online (Sandbox Code Playgroud)
mymodule.xml:
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="view_crm_opportunity_mymodule_form" model="ir.ui.view">
<field name="name">crm.lead.mymodule.inherit</field>
<field name="model">crm.lead</field>
<field name="inherit_id" ref="crm.crm_case_form_view_oppor"/>
<field name="arch" type="xml">
<xpath expr="//notebook/page[@name='lead']" position="after">
<page string="Product Information">
<group col="3">
<field name="product_type"/>
</group>
</page>
</xpath>
</field>
</record>
</data>
</openerp>
Run Code Online (Sandbox Code Playgroud)
在我的代码发生变化之后,我尝试了很多安装,直到我卸载它并且odoo崩溃了.我收到"内部服务器错误"与以下日志:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 177, in run_wsgi
execute(self.server.app)
...
...
...
File "/usr/lib/python2.7/dist-packages/openerp/modules/registry.py", line 168, in …
Run Code Online (Sandbox Code Playgroud) odoo-9 ×10
openerp ×7
python ×6
odoo-8 ×4
odoo ×2
python-2.7 ×2
inheritance ×1
javascript ×1
ms-access ×1
odoo-10 ×1
openerp-8 ×1
qweb ×1
xml ×1
xpath ×1