我正在5为我的计算领域返回,我old_default_code收到以下错误:
ValueError:字典更新序列元素#0的长度为1; 2是必需的
我究竟做错了什么?
Python函数的代码:
def _old_default_code(self, cr, uid, ids, name, arg, context=None):
return '5'
_columns = {
'old_default_code' : fields.function(_old_default_code, type='char', size=32, method=True, store=False, multi=False) }
Run Code Online (Sandbox Code Playgroud)
XML代码:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- mrp_bom -->
<record id="adamson_mrp_bom_form_view" model="ir.ui.view">
<field name="name">adamson.mrp.bom.form.view</field>
<field name="model">mrp.bom</field>
<field name="type">form</field>
<field name="inherit_id" ref="mrp.mrp_bom_form_view" />
<field name="arch" type="xml">
<xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='sequence']" position="before" >
<field name="old_default_code" />
<button class="oe_inline oe_stat_button" type="object" string="Go!" icon="gtk-go-forward" name="action_go"
attrs="{'invisible':[('old_default_code','=', '5')]}" />
</xpath>
Run Code Online (Sandbox Code Playgroud)
小智 7
@Nebojsa
field.function总是希望返回一个字典,在你的情况下你只返回一个"整数".系统的默认行为是它需要一个字典,其中键是记录的"id",value是要返回的值.
例如:
如果你想在你的情况下返回'5'并且记录id是2,那么下面将是字典{2:5}
注意:
在计算你的方法中为所有这些id计算的任何id时,你应该在字典中返回一个值,即使没有找到/计算任何值,那么你应该至少对这些id返回false,但至少要确保你为函数中的所有id返回一些值.
如果你在这方面遇到麻烦,请告诉我
希望这可以帮助..
小智 5
遇到此错误的最常见方法是当您遇到类型转换错误时,例如,
MWE 重新生成错误 -
str_var = 'abc'
str_var = dict(str_var)
Run Code Online (Sandbox Code Playgroud)
运行这个会给出错误
ValueError: dictionary update sequence element #0 has length 1; 2 is required
希望这可以帮助。