如何在OpenERP v7中进行调试?
在以前版本的OpenERP中,它很容易调试.但在最新版本中,调试起来很困难.
我是Odoo的新手,我陷入了困境.我已经在自定义模块的后端添加了一些小部件.现在我想在我的网站前端添加一个小部件,但我没有让它工作.
我有以下几个片段:
frontend_views.xml
<openerp>
<data>
<!-- Templates -->
<template id="assets_frontend" name="test_module_asset_frontend" inherit_id="website.theme">
<xpath expr="." position="inside">
<!-- Custom JS and CSS -->
<link rel="stylesheet" href="/test_module/static/src/css/frontend.css" />
<script type="text/javascript" src="/test_module/static/src/js/frontend.js" />
</xpath>
</template>
</data>
</openerp>
Run Code Online (Sandbox Code Playgroud)
以及小部件的JavaScript代码:
static/src/js/frontend.js
openerp.test_module = function(instance, local) {
local.TestWidget = instance.Widget.extend({
start: function() {
console.log('Widget loaded!');
this._super();
},
});
instance.web.client_actions.add('example.action', 'instance.test_module.TestWidget');
}
Run Code Online (Sandbox Code Playgroud)
我怎么能在模板中调用小部件?我尝试了以下事项:
frontend_views.xml
<record model="ir.actions.client" id="action_client_example">
<field name="name">Example Client Action</field>
<field name="tag">example.action</field>
</record>
<template id="details">
<t t-call="website.layout">
<t t-set="title">Details</t>
<div class="oe_structure">
<div class="container">
<button id="test" name="action_client_example" sequence="0" …Run Code Online (Sandbox Code Playgroud) OpenERP和Odoo之间的区别是什么.我知道Odoo(v8)是最新版本的OpenERP(v7),也解释了一些关于Odoo V9的内容.这里的区别在于它意味着Odoo中可用的所有附加功能以及Odoo v9中包含的额外功能.
我想制作一个循环来精确打印元素.像这样的东西:
<t t-for="o.label_qty" >
...
</t>
Run Code Online (Sandbox Code Playgroud)
哪里o.label_qty是整数.
但我只能t-foreach在qweb中使用循环:
<t t-foreach="o.pack_operation_ids" t-as="l" >
...
</t>
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
如果不是,我认为唯一的解决方案是创建一个带有o.label_qty元素的虚拟列表并将其写入foreach.
在我的模块中,我有以下many2one字段:
'xx_insurance_type': fields.many2one('xx.insurance.type', string='Insurance')
其中,xx.insurance.type如下:
class InsuranceType(osv.Model):
_name='xx.insurance.type'
_columns = {
'name' : fields.char(size=128, string = 'Name'),
'sale_ids': fields.one2many('sale.order', 'xx_insurance_type', string = 'Sale orders'),
'insurance_percentage' : fields.float('Insurance cost in %')
}
Run Code Online (Sandbox Code Playgroud)
我知道many2one字段将名称字段作为其显示名称,但我希望它使用name和insurance_percentage的形式的组合name + " - " + insurance_percentage + "%"
我读过最好覆盖get_name方法,所以我尝试了以下方法:
def get_name(self,cr, uid, ids, context=None):
if context is None:
context = {}
if isinstance(ids, (int, long)):
ids = [ids]
res = []
for record in self.browse(cr, uid, ids, …Run Code Online (Sandbox Code Playgroud) 我注意到Odoo ERP有两种约束.但是我想知道_sql_constraints和_constraints有什么区别?
_sql_constraints = {
('email_uniq', 'unique(email)', ' Please enter Unique Email id.')
}
_constraints=[
(_check_qty_and_unitprice, u'Qty must be more than 0',['product_qty', 'cost_unit']),
]
Run Code Online (Sandbox Code Playgroud) 我在Odoo中有一个带有函数的计算字段.当我不添加商店参数时,一切正常.当我添加store参数时,它根本不执行代码.
我的代码:
class opc_actuelewaardentags(models.Model):
_name = 'opc_actuelewaardentags'
unit = fields.Char(compute='changeunit')
def changeunit(self):
print "print"
allrecords_actwaardent = self.search([])
obj_taginst = self.env['opc_taginstellingen']
allrecords_taginst = obj_taginst.search([])
for i in allrecords_actwaardent:
for j in allrecords_taginst:
if i.tagnaam == j.tagnaam and i.unit != j.unit:
i.unit = j.unit
Run Code Online (Sandbox Code Playgroud)
所以:当我调用这样的代码时:
unit = fields.Char(compute='changeunit')
Run Code Online (Sandbox Code Playgroud)
代码被执行(显示"打印").
当我这样调用代码时:
unit = fields.Char(compute='changeunit', store=True)
Run Code Online (Sandbox Code Playgroud)
代码未执行(不显示"print").
我的代码有什么问题吗?或者这是一个错误?这对我来说似乎很奇怪......
我需要能够将值存储在数据库中,以便我可以在树视图中过滤单元.
编辑:我应用了Juan Salcedo的提示.没工作......
我就这样做了:
unit = fields.Char(default = changeunit)
def changeunit(self):
print "print"
allrecords_actwaardent = self.search([])
obj_taginst = self.env['opc_taginstellingen']
#Hier dan i.p.v. self werken met …Run Code Online (Sandbox Code Playgroud) 我试图在一个Odoo表单视图中使一个字段不可见.检查"可以出售"时==>"产品经理"应该是不可见的:
我尝试在产品表单的继承视图中使用属性"invisible"与域:
<record model="ir.ui.view" id="product_template_form_inherit">
<field name="name">product.template.product.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view" />
<field name="arch" type="xml">
<field name="product_manager" position="attributes">
<attribute name="invisible">[('sale_ok', '=', True)]</attribute>
</field>
</field>
</record>
Run Code Online (Sandbox Code Playgroud)
当字段sale_ok为true时,product_manager字段实际上是隐藏的.但是当字段sale_ok再次变为false时,字段product_manager保持隐藏状态.
我也试过这个:
<field name="product_manager" attrs="{'invisible': [('sale_ok', '=', True)]}"/>
Run Code Online (Sandbox Code Playgroud)
这也不起作用.
我也尝试过其他域名:
[('sale_ok', '==', True)]
[('sale_ok', '!=', False)]
[('sale_ok', '=', 'True')]
Run Code Online (Sandbox Code Playgroud)
不确定这里有什么问题......当(未)检查时如何使它(in)可见?
我最终得到的是以下内容:选中复选框后,表单应立即更改而不保存.必须添加和删除字段.那可能吗?
编辑:
我现在可以用ChesuCR的答案隐藏/取消隐藏产品经理.但是,当我使用"loc_rack"(存储位置==>机架)尝试相同的操作时,它会给出错误:
Field(s) `arch` failed against a constraint: Invalid view definition
Error details:
Element '<field name="loc_rack">' cannot be located in parent view
Run Code Online (Sandbox Code Playgroud)
这是我使用的代码:
<field name="loc_rack" position="replace">
<field name="loc_rack" attrs="{'invisible': …Run Code Online (Sandbox Code Playgroud) 我创建了一个新的Groups,它是一个Personnel Group,但在View Metadata中,我创建的新Group没有XML ID,在哪里可以找到XML ID,或者在外部ID中添加新组的XML ID菜单我找不到ID.
我正在尝试使用XML 文件中的 attrs来创建一个带有widget="radio"的选择字段。应用了 widget="radio" 时不需要选择字段。但是当我删除收音机小部件时,选择字段在创建新记录时在表单视图中获得所需的效果。
这是我在那里申请的选择字段:
<field name="installments_calculation" widget="radio" options="{'horizontal': true}" attrs="{'required': [('repayment_method', '=', 'salary deduction')]}"/>
Run Code Online (Sandbox Code Playgroud)
这是我的repayment_method:
repayment_method = fields.Selection([('cash/bank', 'Cash/Bank'), ('salary deduction', 'Salary Deduction')])
Run Code Online (Sandbox Code Playgroud)
我希望在 XML 文件中的条件下应用 required 属性时需要选择字段。对于带有 widget="radio" 的选择字段,这种行为是否正常,或者我做错了什么?如果这是正常的,我怎样才能获得widget="radio" 所需的选择字段?
odoo ×10
odoo-8 ×4
python ×4
xml ×4
openerp ×3
openerp-7 ×2
openerp-8 ×2
constraints ×1
field ×1
for-loop ×1
inheritance ×1
javascript ×1
odoo-view ×1
python-2.7 ×1
qweb ×1
widget ×1