문제

새로운 양식을 포함하는 Django에서 최신 SVN 브랜치를 설치했습니다. 나는 django.forms.extras.widget에서 selectDateWidget을 사용하려고하지만 필드는 정상적인 날짜 인 푸트 위젯으로 표시되고 있습니다.

내 응용 프로그램의 양식은 다음과 같습니다.

from django import forms
from jacob_forms.models import Client

class ClientForm(forms.ModelForm):
    DOB = forms.DateField(widget=forms.extras.widgets.SelectDateWidget)

    class Meta:
            model = Client

내가 뭘 잘못하고 있죠? 양식/extras/widgets.py 확인 SelectDateWidget 클래스가 존재합니다.

도움이 되었습니까?

해결책

실제 문제는 SelectDateWidget을 이런 식으로 참조 할 수 없다는 것입니다. 참조로 코드를 변경하여 다르게 문제를 해결했습니다.

from django.forms import extras
...
    DOB = forms.DateField(widget=extras.SelectDateWidget)

이것은 가져온 패키지에서 package.package.class를 참조 할 수없는 한계 인 것 같습니다. 솔루션은 엑스트라를 가져옵니다. 참조는 단지 package.class입니다.

다른 팁

티켓 Re : SelectDateWidget에 대한 문서가 부족합니다.티켓 #7437

다음과 같이 사용해야 할 것 같습니다.

widget=forms.extras.widgets.SelectDateWidget()

참고 괄호가 예입니다.

사용하지 않는 이유 forms.SelectDateWidget. 참조로 사용하십시오.

import datetime

from django import forms


class HistDateForm(forms.Form):
    cur_year = datetime.datetime.today().year
    year_range = tuple([i for i in range(cur_year - 2, cur_year + 2)])
    hist_date = forms.DateField(initial=datetime.date.today() - datetime.timedelta(days=7),widget=forms.SelectDateWidget(years=year_range))

다음은 Form.py입니다

from django import forms
from django.forms import extras

DOY = ('1980', '1981', '1982', '1983', '1984', '1985', '1986', '1987',
       '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995',
       '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003',
       '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011',
       '2012', '2013', '2014', '2015')


DOB = forms.DateField(widget=extras.SelectDateWidget(years = DOY))

귀하의 코드는 저에게 잘 작동합니다. 이와 같은 경우 모델과 형태의 필드 이름 사이의 불일치를 확인하십시오 (DOB ~ 대 dob 쉽게 오타가 만들 수 있습니다), 당신은 당신의 견해에 올바른 형태를 인스턴스화하고 템플릿으로 전달했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top