저는 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 말 : 파이썬 날짜 시간 : Here 및 Here을.
하지만 오류가있어 :
TypeError: Error when calling the metaclass bases
unhashable type: 'list'
그래서 내가 필요가있는 무엇을? 나는 사용자가 Plone에서 Contenttype Dexterity를 만들 때 필드 "uploaded_at
"을 "날짜와 시간"으로 구성해야합니다.
[UPDATE 3]
FULL
>>> 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'를 사용하여 날짜가 가져 오기 시간이 아닌 런타임에 계산되도록해야한다는 점을 지적하는 것이 옳습니다. –