2016-09-07 7 views
0

Я кодирую продукт, используя Python Dexterity Type, и у меня есть одно поле shema.Datetime (см. Ниже), и я хочу установить время по умолчанию, когда форма была создана в Plone.Как установить значение по умолчанию zope.schema.datetime?

Я пробовал использовать Zope DateTime и Python DateTime и не работает. У docs zope schema нет примеров для этого.

# I'm tried use this options with DateTime 
from DateTime import DateTime 
# DateTimeNow = DateTime() 
# DateTimeNow = DateTime().asdatetime() 

# And tried use datetime 
import datetime 
DateTimeNow = datetime.datetime.now() 

class IDigitalFile(model.Schema): 
    ... 

    uploded_at = schema.Datetime(
     title=_(u"Data de Upload"), 
     required=True, 
     defaultFactory=DateTimeNow, 
    ) 

Итак, как я установил значение по умолчанию в этом случае?

+1

Попробуйте использовать '' DateTimeNow = datetime.datetime.now'' без скобок. – turkus

+0

Что сказал @turkus, или, другими словами, передать ему * заводское значение, вызывающее, производя значение * вместо * значения *. Из [plone docs] (http://docs.plone.org/external/plone.app.dexterity/docs/advanced/defaults.html): «DefaultFactory - это функция, которая будет вызываться, когда форма добавления загружается в определить значение по умолчанию. " –

+0

@turkus Я пытался использовать n мой вывод 'TypeError: Ошибка при вызове базовых метаклассов unhashable type: 'list' > /home/jafar/training/buildout/eggs/zope.interface-3.6.7-py2.7- linux-x86_64.egg/zope/interface/interface.py (415) get() ' –

ответ

0

Решение использует Python DATETIME, а не Zope DateTime см Код:

from datetime import datetime 
... 
def nowDateTime(): 
    return datetime.today() 

... 
directives.mode(uploded_at="hidden") 
uploded_at = schema.Datetime(
    title=_(u"Data de Upload"), 
    required=True, 
    defaultFactory=nowDateTime, 
) 
Смежные вопросы