Navigation

    Odoo 中文社区

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    • Users
    • Groups

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

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

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

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

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

    Odoo 开发与实施交流
    4
    6
    5042
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      ccdos last edited by

      长沙-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 Reply Last reply Reply Quote 0
      • Joshua
        Joshua 管理员 last edited by

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

         <br />&#039;birthdate&#039;: fields.date.context_today, <br />&#039;create_at&#039;: fields.datetime.now,<br />
        
        1 Reply Last reply Reply Quote 0
        • digitalsatori
          digitalsatori 管理员 last edited by

          [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]

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

          1 Reply Last reply Reply Quote 0
          • Joshua
            Joshua 管理员 last edited by

            我们来看看 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一个还是函数。

            1 Reply Last reply Reply Quote 0
            • G
              ghosthand last edited by

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

              1 Reply Last reply Reply Quote 0
              • First post
                Last post