在 Django 中为 SelectDateWidget 设置月份和日期范围
Set Months and Day Ranges for SelectDateWidget in Django
我有一个 Django 形式的 SelectDateWidget,它应该只允许用户 select 某几年前的日期。如何限制小部件中的月份和日期?例如,当当前日期为 1 月 28 日时,最后可能年份出生的用户不应 select 1 月 1 日。同样,不应允许最近可能年份出生的用户 select ] 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)))
如何设置表格中允许的月份和日期?
我不确定你的小部件的规则是什么,但你总是可以使用表单构造函数动态创建字段:
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)
我有一个 Django 形式的 SelectDateWidget,它应该只允许用户 select 某几年前的日期。如何限制小部件中的月份和日期?例如,当当前日期为 1 月 28 日时,最后可能年份出生的用户不应 select 1 月 1 日。同样,不应允许最近可能年份出生的用户 select ] 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)))
如何设置表格中允许的月份和日期?
我不确定你的小部件的规则是什么,但你总是可以使用表单构造函数动态创建字段:
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)