【问题标题】:How can I set a schema.Datetime field to None with Dexterity如何使用敏捷将 schema.Datetime 字段设置为 None
【发布时间】:2011-09-01 14:48:32
【问题描述】:

我正在使用 Dexterity 编写一个简单的内容类型来管理客户,除了通常的字段,例如姓名、公司、电话...... 我还添加了一个日期时间字段来存储第一次与 客户已经举行,我们称之为“第一次会议”,我定义的 在我的界面 ICustomers 中:

firstmeeting = schema.Datetime(
        title=_(u"First Meeting"),
        required=False,
    )

现在,我注意到当我保存一个新的客户文档时,第一次会议 即使我没有设置任何日期,字段也已填充当前日期 在形式上,这不是我想要的,因为没有与 客户已经举行了。所以我想知道如何设置 None 值 对于此字段,因此不会显示任何内容。

我一直在尝试使用自定义类,Martin Aspeli 在 http://plone.org/products/dexterity/documentation/manual/developer-manual/advanced/classes 但我不知道如何检查用户输入并设置 None 值(如果没有) 已输入。

谢谢

【问题讨论】:

    标签: plone dexterity


    【解决方案1】:

    你试过default=None吗?

    【讨论】:

    • 是的,我试过了,但是没有用。这里的问题不是为用户设置一个默认值,它已经是 None。问题是当用户保存表单时,会发生一些事情,将字段值从 None 更改为当前日期。
    【解决方案2】:

    我发现我的代码中发生了什么。

    实际上问题出在模板 view.pt 中,我使用了 toLocalizedTime() 函数, 它将 None 值转换为当前日期,所以我添加了一个 tal:condition 来打印日期值。

    <span id="form-widgets-firstmeeting" class="datetime-widget datetime-field"
          tal:condition="context/firstmeeting"
          tal:content="python:context.toLocalizedTime(context.firstmeeting)" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2011-04-17
      相关资源
      最近更新 更多