私は、Plone 4.3.10にPython 2.7.xを使って敏捷性タイプを書いています。敏捷性の種類のデフォルトの日付を設定する方法schema.datetime?
フィールドのデフォルトの日付をschema.Datetimeに設定します。私はここでの問題は、それdatetime.datetime(2016, 9, 6, 14, 34, 51, 812271)
のように、私は私が使用してみましたhttp://docs.plone.org/4/en/external/plone.app.dexterity/docs/advanced/defaults.html
このヒントに従ってくださいそのdatetime.datetime.now()
の出力だと思う
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/jafar/training/buildout/src/projetime.ged/src/projetime/ged/content/digitalfile.py", line 32, in <module>
class IDigitalFile(model.Schema):
File "/home/jafar/training/buildout/eggs/plone.supermodel-1.2.7-py2.7.egg/plone/supermodel/model.py", line 67, in __init__
self._SchemaClass_finalize()
File "/home/jafar/training/buildout/eggs/plone.supermodel-1.2.7-py2.7.egg/plone/supermodel/model.py", line 74, in _SchemaClass_finalize
adapter()
File "/home/jafar/training/buildout/eggs/plone.supermodel-1.2.7-py2.7.egg/plone/supermodel/directives.py", line 84, in __call__
for fieldName in self.check():
File "/home/jafar/training/buildout/eggs/plone.supermodel-1.2.7-py2.7.egg/plone/supermodel/directives.py", line 76, in check
if fieldName not in schema:
File "/home/jafar/training/buildout/eggs/zope.interface-3.6.7-py2.7-linux-x86_64.egg/zope/interface/interface.py", line 564, in __contains__
return self.get(name) is not None
File "/home/jafar/training/buildout/eggs/zope.interface-3.6.7-py2.7-linux-x86_64.egg/zope/interface/interface.py", line 415, in get
attr = attrs.get(name)
TypeError: Error when calling the metaclass bases
unhashable type: 'list'
:
import datetime
agoradatetime = datetime.datetime.now()
directives.read_permission(uploded_at="cmf.ManagePortal")
directives.write_permission(uploded_at="cmf.ManagePortal")
uploded_at = schema.Datetime(
title=_(u"Data de Upload"),
required=True,
default=agoradatetime,
)
は、私は私はこのエラーを得たdefault=agoradatetime
を設定すると、 :
from DateTime import DateTime
datenow = DateTime()
しかし、エラーWrongTypeを持って、怒鳴る参照:
WrongType: (DateTime('2016/09/06 14:39:29.021494 GMT-3'), <type 'datetime.datetime'>, '')
[UPDATE 2]
は、新しいコードを見て:
# -*- coding: utf-8 -*-
from plone.app.textfield import RichText
from plone.autoform import directives
from plone.namedfile import field as namedfile
from plone.supermodel.directives import fieldset
from plone.supermodel import model
from z3c.form.browser.radio import RadioFieldWidget
from zope import schema
from zope.schema.interfaces import IContextAwareDefaultFactory
from zope.schema.vocabulary import SimpleVocabulary
from zope.schema.vocabulary import SimpleTerm
from zope.interface import provider
from DateTime import DateTime
from datetime import datetime
from projetime.ged import _
TipoDeDocumentoVocabulary = SimpleVocabulary(
[SimpleTerm(value=u'processo', title=_(u'Processos')),
SimpleTerm(value=u'contratos', title=_(u'Contratos')),
SimpleTerm(value=u'outros', title=_(u'Outros'))]
)
def nowDateTime():
zope_dt = DateTime().asdatetime()
python_dt = datetime.today()
return python_dt
class IDigitalFile(model.Schema):
"""Dexterity-Schema
"""
directives.widget(TipoDeDocumento=RadioFieldWidget)
TipoDeDocumento = schema.Choice(
title=_(u"Tipo de Documento"),
vocabulary=TipoDeDocumentoVocabulary,
required=True
)
titulo = schema.TextLine(
title=_(u"Título"),
required=True
)
codDoDocumento = schema.TextLine(
title=_(u"Cód. do Documento"),
required=False
)
CpfCnpj = schema.TextLine(
title=_(u"CPF/CNPJ"),
required=False
)
Assunto = schema.TextLine(
title=_(u"Assunto"),
required=True
)
Tipo = schema.TextLine(
title=_(u"Tipo"),
required=False
)
Descricao = schema.Text(
title=_(u"Descrição"),
required=True
)
fieldset('file', fields=['Arquivo'])
Arquivo = namedfile.NamedBlobFile(
title=_(u"Arquivo Digitalizado"),
required=True
)
directives.omitted(['Automatico', 'uploded_at'])
directives.read_permission(Automatico="cmf.ManagePortal")
directives.write_permission(Automatico="cmf.ManagePortal")
directives.widget(Automatico=RadioFieldWidget)
Automatico = schema.Bool(
title=_(u"Upload via Script?"),
required=True,
default=True,
)
directives.read_permission(uploded_at="cmf.ManagePortal")
directives.write_permission(uploded_at="cmf.ManagePortal")
uploded_at = schema.Datetime(
title=_(u"Data de Upload"),
required=True,
defaultFactory=nowDateTime,
)
documentaionは言う:Pythonの日時:HereとHereを。
しかし、私はエラーだ:だから私は必要なもの
TypeError: Error when calling the metaclass bases
unhashable type: 'list'
を?私はユーザーがPloneでContentTypeの敏捷性を作成するときに、フィールドuploaded_at
を "date and time now"で構築する必要があります。
[UPDATE 3]
FULL TRACEBACK
>>> from projetime.ged.content.digitalfile import IDigitalFile
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/jafar/training/buildout/src/projetime.ged/src/projetime/ged/content/digitalfile.py", line 37, in <module>
class IDigitalFile(model.Schema):
File "/home/jafar/training/buildout/eggs/plone.supermodel-1.2.7-py2.7.egg/plone/supermodel/model.py", line 67, in __init__
self._SchemaClass_finalize()
File "/home/jafar/training/buildout/eggs/plone.supermodel-1.2.7-py2.7.egg/plone/supermodel/model.py", line 74, in _SchemaClass_finalize
adapter()
File "/home/jafar/training/buildout/eggs/plone.supermodel-1.2.7-py2.7.egg/plone/supermodel/directives.py", line 84, in __call__
for fieldName in self.check():
File "/home/jafar/training/buildout/eggs/plone.supermodel-1.2.7-py2.7.egg/plone/supermodel/directives.py", line 76, in check
if fieldName not in schema:
File "/home/jafar/training/buildout/eggs/zope.interface-3.6.7-py2.7-linux-x86_64.egg/zope/interface/interface.py", line 564, in __contains__
return self.get(name) is not None
File "/home/jafar/training/buildout/eggs/zope.interface-3.6.7-py2.7-linux-x86_64.egg/zope/interface/interface.py", line 415, in get
attr = attrs.get(name)
TypeError: Error when calling the metaclass bases
unhashable type: 'list'
このトレースバックは 'default'の使用には関係しません。これは、あなたが私たちに見せてくれなかった部分のコードや、あなたのインターフェースが拡張している別のインターフェースの問題が原因である可能性があります。 Lucaの答えは、 'defaultFactory'を使用して、日付がインポート時ではなく実行時に計算されることを確認することを指摘するのは正しいです。 –