Как я могу установить для поля schema.Datetime значение None с ловкостью

Я пишу простой тип контента с ловкостью для управления клиентами, помимо обычных полей, например, имя, компания, телефон... Я также добавил поле даты и времени для хранения, когда была проведена первая встреча с клиентами, давайте позвоним это «первое собрание», которое я определил в своем интерфейсе ICustomers как:

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

Теперь я замечаю, что когда я сохранил новый документ клиента, поле первой встречи было заполнено текущей датой, даже если я не установил дату в форме, а это не то, что я хочу, потому что встреча с клиентом не проводилась пока что. Поэтому я хотел бы знать, как установить значение None для этого поля, чтобы ничего не отображалось.

Я пытался использовать пользовательский класс, описанный Мартином Аспели в http://plone.org/products/dexterity/documentation/manual/developer-manual/advanced/classes, но я не знаю, как проверить ввод пользователя и установить значение None, если ничего не было введено.

Спасибо


person ddellaquila    schedule 01.09.2011    source источник


Ответы (2)


Вы пробовали default=None?

person Ross Patterson    schedule 01.09.2011
comment
Да, я пробовал это, но не работал. Проблема здесь не в том, чтобы установить для пользователя значение по умолчанию, которое уже равно None. Проблема в том, что когда пользователь сохраняет форму, происходит что-то, что меняет значение поля с None на текущую дату. - person ddellaquila; 02.09.2011

Я узнал, что происходит в моем коде.

На самом деле проблема была в шаблоне view.pt, где я использовал функцию toLocalizedTime(), которая преобразовывала значение None в текущую дату, поэтому я добавил условие tal: для печати значения даты.

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