ValueError:字典更新序列元素#0的长度为1; 2是必需的

时间:2014-12-23 21:10:51

标签: python openerp

我正在为我的计算字段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) }

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>

2 个答案:

答案 0 :(得分:7)

@Nebojsa

field.function总是希望返回一个字典,在你的情况下,你只需返回一个&#34;整数&#34;。系统的默认行为是它需要一个字典,其中键是&#34; id&#34;记录和值的值是您想要返回的值。

例如:

如果你想返回&#39; 5&#39;在您的情况下,记录ID为2,然后将是字典{2:5}

注意:

在计算你的方法中为所有这些id计算的任何id时,你应该在字典中返回一个值,即使没有找到/计算任何值,那么你应该至少返回false来反对这些id,但要确保你至少会对你在函数中得到的所有id返回一些值。

如果你在这个

中遇到麻烦,请告诉我

希望这会有所帮助..

答案 1 :(得分:1)

遇到此错误的最常见方法是发生类型转换错误时,例如

MWE重新生成错误-

wp_enqueue_script('jquery-magnific', get_template_directory_uri() .'/assets/js/jquery.magnific-popup.min.js', array(), '1.0.0', 'true');

运行此错误 str_var = 'abc' str_var = dict(str_var)

希望这会有所帮助。