2016-06-14 4 views
2

내 양식 (plone.directives.form.SchemaForm)에서 날짜 필드 (zope.schema.Date)가 포함 된 스키마를 사용하고 있으며 datefield는 datepicker 위젯으로 자동 설정됩니다.Plone/zope.schema- 두 날짜 사이의 날짜 위젯에서 연도 범위를 어떻게 설정합니까?

편집 : 나는 플론 (Plone) 4.3.9

위젯의 기본 년 범위가 자동으로 날짜를 기준으로 -10 년 +10 년 사이에 설정을 사용하고 있습니다.

나는 날짜 필드에 대한 위젯 공장을 만들고 예에서 I 1984 년 10 년 제공

from z3c.form.widget import FieldWidget 
from zope.component import adapter 
from zope.interface import implementer 
from plone.directives import form 
from datetime import date 
from plone.formwidget.datetime.z3cform import DateWidget 
from plone.supermodel import model 
from z3c.form.interfaces import IFieldWidget 

@implementer(IFieldWidget) 
def DateFieldWidget(field, request): 
    widget = FieldWidget(field, DateWidget(request)) 
    start = -(date.today().year - 1984) 
    end = 10 
    widget.years_range = (start, end) 
    return widget 

class IMyObject(model.Schema): 
    ... 
    form.widget('Prev_Date',DateFieldWidget) 
    Prev_Date = schema.Date(
     title=u"Previous Date", 
     description=u"A previous date", 
     required=False, 
    ) 

이 년 사이에 설정하는 추가 양식에서이 유일한 작품, 연도 범위를 설정하려 오늘부터. 편집 양식에서 선택 가능한 첫 해와 마지막 해는 꺼져 있습니다.

값이 설정되어 있는지 확인할 수 있는지 확인하려고했으나 편집 폼에서 빈 값을 얻었습니다.

@implementer(IFieldWidget) 
def DateFieldWidget(field, request) 
    widget = FieldWidget(field, DateWidget(request)) 
    #widget.value is a tuple 
    defaultEndOfRange = 10 
    try: 
     start = -(int(widget.value[0]) - 1984) 
     end = defaultEndOfRange - (int(widget.value[0]) - date.today().year) 
    except: 
     start = -(date.today().year - 1984) 
     end = defaultEndOfRange 
    widget.years_range = (start,end) 
    return widget 
내가 대신 위젯 팩토리를 사용하는 updateWidgets 기능에서이 작업을 수행 할 수 있습니다,하지만 난에 대한 편집 양식을 추가하고 사용자 정의하지 않았 두 손재주 콘텐츠 형식을 가지고 있고가 같은 해 범위를 사용하려면

몇 가지 다른 분야.

이 방법이 효과가 없으므로 더 좋은 방법은 무엇입니까? 또는 양식 추가 및 편집을 계속해야합니까? 양식의 내 인터페이스에서

+0

대답은 없지만 자연스러운 추측 ... 나는 Plone 4를 사용하고 있다고 가정하고 있습니다. http : //www.linuxdocs.edu에서 문서화 된 ""태그의 최소/최대 값을 jbot을 사용하여 무시할 수 있습니다. //jquerytools.github.io/documentation/dateinput/index.html – sdupton

답변

0

내가 날짜 필드에 대한이 정의가 :

from collective.z3cform.datetimewidget import DateWidget  
.... 
.... 
....  
form.widget('birthday', DateWidget) 
birthday = schema.Date(
    title=_(u'Birthday'), 
    description=_(u'your birthday'), 
    required=True, 
    min = date(1950,1,1), 
    max = date(2015,1,1)) 

을하지만 그것은 플론 (Plone) 4 솔루션입니다.

+0

이 도구를 사용해 보았지만 datepicker가 손실되었습니다. –