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

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

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

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

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



  • 长沙-figol(346732707)  9:57:06<br />总监,给字段设置默认值时,为什么要用lambda *a <br /><br /><br />重庆-mrshelly(49812643)  10:01:27<br />好吧.<br />'date': '2013-01-01';<br />就会一直是 2013-01-01<br />长沙-figol(346732707)  10:01:55<br />嗯<br />重庆-mrshelly(49812643)  10:02:06<br />然后 还有一种写法 <br /><br />'date': time.strftime('%Y-%m-%d'),<br />然后 还有一种<br />'date': lambda *a: time.strftime('%Y-%m-%d'),<br />三种写法. 理论上, 第一,二种是一样的.<br />长沙-figol(346732707)  10:02:43<br />en<br />南京-ccdos(1431494)  10:03:00<br />用了lambda  , 每次都会计算<br />重庆-mrshelly(49812643)  10:03:05<br />举个例. 当你 2013-01-01 启动服务器进程后,<br /><br />你进单据, 默认值是 2013-01-01<br />当你第二天进时,  还是2013-01-02<br />还是2013-01-01<br />如果你2013-01-14 重启服务器.<br />第一种 还是2013-01-01<br />第二种 是2013-01-14<br />重庆-mrshelly(49812643)  10:04:11<br />第三种是2013-01-14<br />南京-windy(359063962)  10:04:14<br />jeff 失踪了?<br />长沙-figol(346732707)  10:04:26<br />哦。。基本上明白了。<br />谢谢 总监指导<br />广东-AllanWong(18895563)  10:04:37<br />搞大project去了吧<br />重庆-mrshelly(49812643)  10:04:43<br />2013-01-15 看时, 第一种是 2013-01-01  第二种是 2013-01-14  第三种是 2013-01-15<br /> <br /><br /><br />南京-海飞(330472962)  10:07:20<br />固定;启动时;按日期<br /><br />



  • 长沙-figol(346732707)  9:57:06<br />总监,给字段设置默认值时,为什么要用lambda *a <br /><br /><br />重庆-mrshelly(49812643)  10:01:27<br />好吧.<br />'date': '2013-01-01';<br />就会一直是 2013-01-01<br />长沙-figol(346732707)  10:01:55<br />嗯<br />重庆-mrshelly(49812643)  10:02:06<br />然后 还有一种写法 <br /><br />'date': time.strftime('%Y-%m-%d'),<br />然后 还有一种<br />'date': lambda *a: time.strftime('%Y-%m-%d'),<br />三种写法. 理论上, 第一,二种是一样的.<br />长沙-figol(346732707)  10:02:43<br />en<br />南京-ccdos(1431494)  10:03:00<br />用了lambda  , 每次都会计算<br />重庆-mrshelly(49812643)  10:03:05<br />举个例. 当你 2013-01-01 启动服务器进程后,<br /><br />你进单据, 默认值是 2013-01-01<br />当你第二天进时,  还是2013-01-02<br />还是2013-01-01<br />如果你2013-01-14 重启服务器.<br />第一种 还是2013-01-01<br />第二种 是2013-01-14<br />重庆-mrshelly(49812643)  10:04:11<br />第三种是2013-01-14<br />南京-windy(359063962)  10:04:14<br />jeff 失踪了?<br />长沙-figol(346732707)  10:04:26<br />哦。。基本上明白了。<br />谢谢 总监指导<br />广东-AllanWong(18895563)  10:04:37<br />搞大project去了吧<br />重庆-mrshelly(49812643)  10:04:43<br />2013-01-15 看时, 第一种是 2013-01-01  第二种是 2013-01-14  第三种是 2013-01-15<br /> <br /><br /><br />南京-海飞(330472962)  10:07:20<br />固定;启动时;按日期<br /><br />


  • 管理员

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


  • 管理员

    [quote author=Joshua link=topic=7319.msg16733#msg16733 date=1372043171]<br />6.1后,官方建议date/datetime的默认值的写法是:<br />[code] <br />'birthdate': fields.date.context_today, <br />'create_at': fields.datetime.now,<br />[/code]<br />[/quote]<br /><br />对,否则,用以上讨论中的写法就会有时区计算的问题


  • 管理员

    我们来看看 time.strftime('%Y-%m-%d')  和 lambda *a: time.strftime('%Y-%m-%d'), 的区别<br /><br />[code]<br />In [3]: type(time.strftime('%Y-%m-%d'))<br />Out[3]: str<br /><br />In [4]: type( lambda *a: time.strftime('%Y-%m-%d'))<br />Out[4]: function<br /><br />[/code]<br /><br />其实一个已经解析为str一个还是函数。



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


登录后回复
 

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