【问题标题】:ValueError: dictionary update sequence element #0 has length 1; 2 is requiredValueError:字典更新序列元素 #0 的长度为 1; 2 是必需的
【发布时间】:2015-02-22 01:10:07
【问题描述】:

我正在为我的计算字段 old_default_code 返回 5,我收到以下错误:

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>

【问题讨论】:

    标签: python openerp


    【解决方案1】:

    @Nebojsa

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

    例如:

    如果您想在您的情况下返回“5”并且记录 id 为 2,那么以下将是字典 {2:5}

    注意:

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

    如果您在这方面遇到问题,请告诉我

    希望这会有所帮助..

    【讨论】:

      【解决方案2】:

      遇到此错误的最常见方式是当您遇到类型转换错误时,例如,

      MWE 重新生成错误 -

      str_var = 'abc'
      str_var = dict(str_var)
      

      运行这个会报错 ValueError: dictionary update sequence element #0 has length 1; 2 is required

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-04-01
        • 1970-01-01
        • 2016-02-17
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 2017-12-27
        • 1970-01-01
        相关资源
        最近更新 更多