Django 表单字段使用 SelectDateWidget
我安装了最新的Django SVN分支,这里面有新的表单功能。我想使用django.forms.extras.widgets里的SelectDateWidget,但这个字段却显示成了普通的日期输入框。
这是我应用里的forms.py文件:
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
我哪里出错了呢?我查看了forms/extras/widgets.py,发现里面确实有SelectDateWidget这个类。
5 个回答
2
这是 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))
4
关于SelectDateWidget缺少文档的这个问题,来自于这个票据:
票据 #7437看起来你需要这样使用它:
widget=forms.extras.widgets.SelectDateWidget()
注意这个例子中的括号。
11
真正的问题是,SelectDateWidget 不能这样引用。把代码改成其他方式引用它就解决了我的问题:
from django.forms import extras
...
DOB = forms.DateField(widget=extras.SelectDateWidget)
这似乎是一个限制,你不能从一个已导入的包中引用 package.package.Class。解决办法是导入 extras,这样引用就变成了 package.Class。