• 版块
  • 标签
  • 热门
  • 用户
  • 群组
Skins
  • Light
  • Default
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Quartz
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Slate
  • Solar
  • Superhero
  • Vapor
Collapse

Odoo 中文社区

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

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
6 帖子 4 发布者 5163 浏览
    • 从旧到新
    • 从新到旧
    • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    ccdos
    写于 最后由 编辑
    #1

    长沙-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
    固定;启动时;按日期

    1 条回复 最后回复
    0
  • JoshuaJ 离线
    JoshuaJ 离线
    Joshua 管理员
    写于 最后由 编辑
    #2

    6.1后,官方建议date/datetime的默认值的写法是:

     <br />&#039;birthdate&#039;: fields.date.context_today, <br />&#039;create_at&#039;: fields.datetime.now,<br />
    

    【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

    1 条回复 最后回复
    0
  • digitalsatoriD 离线
    digitalsatoriD 离线
    digitalsatori 管理员
    写于 最后由 编辑
    #3

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

     <br />&#039;birthdate&#039;: fields.date.context_today, <br />&#039;create_at&#039;: fields.datetime.now,<br />
    


    [/quote]

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

    【上海先安科技】(tony AT openerp.cn)

    1 条回复 最后回复
    0
  • JoshuaJ 离线
    JoshuaJ 离线
    Joshua 管理员
    写于 最后由 编辑
    #4

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

    <br />In [3]: type(time.strftime(&#039;%Y-%m-%d&#039;))<br />Out[3]: str<br /><br />In [4]: type( lambda *a: time.strftime(&#039;%Y-%m-%d&#039;))<br />Out[4]: function<br /><br />
    



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

    【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

    1 条回复 最后回复
    0
  • G 离线
    G 离线
    ghosthand
    写于 最后由 编辑
    #5

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

    1 条回复 最后回复
    0

  • 登录

  • 没有帐号? 注册

  • Login or register to search.
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
  • 登录

  • 没有帐号? 注册

  • Login or register to search.