Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

Model中设置默认值时 ,使用 lambda 与否的差别



  • 长沙-figol(346732707)  9:57:06
    总监,给字段设置默认值时,为什么要用lambda *a


    重庆-mrshelly(49812643)  10:01:27
    好吧.
    'date': '2013-01-01';
    就会一直是 2013-01-01
    长沙-figol(346732707)  10:01:55

    重庆-mrshelly(49812643)  10:02:06
    然后 还有一种写法

    'date': time.strftime('%Y-%m-%d'),
    然后 还有一种
    'date': lambda *a: time.strftime('%Y-%m-%d'),
    三种写法. 理论上, 第一,二种是一样的.
    长沙-figol(346732707)  10:02:43
    en
    南京-ccdos(1431494)  10:03:00
    用了lambda  , 每次都会计算
    重庆-mrshelly(49812643)  10:03:05
    举个例. 当你 2013-01-01 启动服务器进程后,

    你进单据, 默认值是 2013-01-01
    当你第二天进时,  还是2013-01-02
    还是2013-01-01
    如果你2013-01-14 重启服务器.
    第一种 还是2013-01-01
    第二种 是2013-01-14
    重庆-mrshelly(49812643)  10:04:11
    第三种是2013-01-14
    南京-windy(359063962)  10:04:14
    jeff 失踪了?
    长沙-figol(346732707)  10:04:26
    哦。。基本上明白了。
    谢谢 总监指导
    广东-AllanWong(18895563)  10:04:37
    搞大project去了吧
    重庆-mrshelly(49812643)  10:04:43
    2013-01-15 看时, 第一种是 2013-01-01  第二种是 2013-01-14  第三种是 2013-01-15



    南京-海飞(330472962)  10:07:20
    固定;启动时;按日期



  • 长沙-figol(346732707)  9:57:06
    总监,给字段设置默认值时,为什么要用lambda *a


    重庆-mrshelly(49812643)  10:01:27
    好吧.
    'date': '2013-01-01';
    就会一直是 2013-01-01
    长沙-figol(346732707)  10:01:55

    重庆-mrshelly(49812643)  10:02:06
    然后 还有一种写法

    'date': time.strftime('%Y-%m-%d'),
    然后 还有一种
    'date': lambda *a: time.strftime('%Y-%m-%d'),
    三种写法. 理论上, 第一,二种是一样的.
    长沙-figol(346732707)  10:02:43
    en
    南京-ccdos(1431494)  10:03:00
    用了lambda  , 每次都会计算
    重庆-mrshelly(49812643)  10:03:05
    举个例. 当你 2013-01-01 启动服务器进程后,

    你进单据, 默认值是 2013-01-01
    当你第二天进时,  还是2013-01-02
    还是2013-01-01
    如果你2013-01-14 重启服务器.
    第一种 还是2013-01-01
    第二种 是2013-01-14
    重庆-mrshelly(49812643)  10:04:11
    第三种是2013-01-14
    南京-windy(359063962)  10:04:14
    jeff 失踪了?
    长沙-figol(346732707)  10:04:26
    哦。。基本上明白了。
    谢谢 总监指导
    广东-AllanWong(18895563)  10:04:37
    搞大project去了吧
    重庆-mrshelly(49812643)  10:04:43
    2013-01-15 看时, 第一种是 2013-01-01  第二种是 2013-01-14  第三种是 2013-01-15



    南京-海飞(330472962)  10:07:20
    固定;启动时;按日期


  • 管理员

    6.1后,官方建议date/datetime的默认值的写法是:
    [code]
    'birthdate': fields.date.context_today,
    'create_at': fields.datetime.now,
    [/code]


  • 管理员

    [quote author=Joshua link=topic=7319.msg16733#msg16733 date=1372043171]
    6.1后,官方建议date/datetime的默认值的写法是:
    [code]
    'birthdate': fields.date.context_today,
    'create_at': fields.datetime.now,
    [/code]
    [/quote]

    对,否则,用以上讨论中的写法就会有时区计算的问题


  • 管理员

    我们来看看 time.strftime('%Y-%m-%d')  和 lambda *a: time.strftime('%Y-%m-%d'), 的区别

    [code]
    In [3]: type(time.strftime('%Y-%m-%d'))
    Out[3]: str

    In [4]: type( lambda *a: time.strftime('%Y-%m-%d'))
    Out[4]: function

    [/code]

    其实一个已经解析为str一个还是函数。



  • 没有用lambda的时候 在修改服务器时间后,如果不重新启动服务的话 在创建纪录的时候,如果在_defaults中有设置默认值,则默认的时间还是修改前的时间。而是用lambda的话,则时间会跟着系统的时间变化,实时更新的


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待