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
 固定;启动时;按日期
- 
[quote author=Joshua link=topic=7319.msg16733#msg16733 date=1372043171] 
 6.1后,官方建议date/datetime的默认值的写法是:<br />'birthdate': fields.date.context_today, <br />'create_at': fields.datetime.now,<br />
 [/quote]
 对,否则,用以上讨论中的写法就会有时区计算的问题
- 
我们来看看 time.strftime('%Y-%m-%d') 和 lambda *a: time.strftime('%Y-%m-%d'), 的区别 <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 />
 其实一个已经解析为str一个还是函数。

