我有一个Django形式的SelectDateWidget,它应该只允许用户选择几年前的日期。如何限制小部件中的月份和天数?例如,在当前日期是1月28日时,在最后一年出生的用户不应该选择1月1日。同样,当前日期是当前日期时,不应允许在最近可能年份出生的人选择2月1日。 1月28日。
这是我的表格:
class Form(forms.Form):
birthday = forms.DateField(widget=SelectDateWidget(empty_label=('Year', 'Month', 'Day'), years=range(datetime.date.today().year-22, datetime.date.today().year - 15)))
如何设置表单中允许的月份和日期?
答案 0 :(得分:1)
我不确定您的小部件的规则是什么,但您始终可以使用表单构造函数动态创建字段:
class FooForm(forms.Form):
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(FooForm, self).__init__(*args, **kwargs)
if user:
# calculate the list of years based on user's information and the rules you have
# e.g. years = range(2010, 2016)
self.fields['birthday'] = forms.DateField(widget=SelectDateWidget(empty_label=('Year', 'Month', 'Day'),
years=years))
然后在你的观点中你做:
def views(request):
form = FooForm(request.POST or None, user=request.user)