【问题标题】:cannot marshal <type 'datetime.date'> objects无法编组 <type 'datetime.date'> 对象
【发布时间】:2014-05-02 10:59:46
【问题描述】:

我正在尝试将记录从 django(前端)保存到 openerp(后端)。我正在使用使用 xmlrpclib 的 openerp Web 服务。它适用于普通的字符串和数字数据,但是当我尝试传递日期字段时,它会引发错误。 cannot marshal &lt;type 'datetime.date'&gt; objects

请帮帮我..

【问题讨论】:

  • 看来xmlrpc 做不到。您应该尝试将其腌制或转换为字符串。
  • 把日期转成字符串,然后传值
  • 感谢大家的支持。我得到了解决方案,首先我必须将日期转换为 ISO 8601 格式以作为 xmlrpc 对象传递。

标签: python django web-services openerp xmlrpclib


【解决方案1】:

要解决cannot marshal &lt;type 'datetime.date'&gt; objects错误,首先将日期转换为ISO 8601格式,然后将其作为对象传递给xmlrpclib

例如:

    dob = form.date_of_birth
    xmlrpc_dob = dob.strftime("%Y%m%dT%H:%M:%S")

更多详情可以阅读the official Python documentation of xmlrpclib

【讨论】:

  • 实际上,ISO 8601 要求在年、月和日之间使用破折号。因此,strftime 调用变为 dob.strftime("%Y-%m-%dT%H:%M:%S")。没有破折号,Odoo 10 仍然不喜欢日期。
【解决方案2】:

您也可以在发送回复之前将datetime.date() 提升为datetime.datetime()

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多