在视图上更改 Django 表单属性
Change Django Form Attribute on view
我正在使用带有 DatePicker
小部件的 Django 表单。我必须在 class 级别上定义 DatePicker
的最小和最大日期。当我 运行 我的视图时,我想更改这两个值,否则,它会保留我启动 Django 服务器时的最小和最大日期值。
from django import forms
from bootstrap_datepicker_plus import DatePickerInput
import pandas as pd
import datetime as dt
MIN_DATE = dt.datetime.today().strftime('%m-%d-%Y')
MAX_DATE = (dt.datetime.today() + dt.timedelta(days=92)).strftime('%m-%d-%Y')
class TableEdit(forms.Form):
Account = forms.CharField(label='Account', max_length=10)
Hedge = forms.CharField(label='Hedge', max_length=10)
Date = forms.DateField(widget=DatePickerInput(
options={
'format': 'MM/DD/YYYY',
'minDate': MIN_DATE,
'maxDate': MAX_DATE
}))
每次从视图调用表单时,如何修改我的 MIN_DATE
和 MAX_DATE
表单属性?
您可以在表单的 __init__
方法中实现此目的,如下所示:
class TableEdit(forms.Form):
Account = forms.CharField(label='Account', max_length=10)
Hedge = forms.CharField(label='Hedge', max_length=10)
Date = forms.DateField()
def __init__(self, *args, **kwargs):
super(TableEdit, self).__init__(*args, **kwargs)
min_date = dt.datetime.today().strftime('%m-%d-%Y')
max_date = (dt.datetime.today() + dt.timedelta(days=92)).strftime('%m-%d-%Y')
self.fields['Date'].widget = DatePickerInput(
options={
'format': 'MM/DD/YYYY',
'minDate': min_date,
'maxDate': max_date
})
我正在使用带有 DatePicker
小部件的 Django 表单。我必须在 class 级别上定义 DatePicker
的最小和最大日期。当我 运行 我的视图时,我想更改这两个值,否则,它会保留我启动 Django 服务器时的最小和最大日期值。
from django import forms
from bootstrap_datepicker_plus import DatePickerInput
import pandas as pd
import datetime as dt
MIN_DATE = dt.datetime.today().strftime('%m-%d-%Y')
MAX_DATE = (dt.datetime.today() + dt.timedelta(days=92)).strftime('%m-%d-%Y')
class TableEdit(forms.Form):
Account = forms.CharField(label='Account', max_length=10)
Hedge = forms.CharField(label='Hedge', max_length=10)
Date = forms.DateField(widget=DatePickerInput(
options={
'format': 'MM/DD/YYYY',
'minDate': MIN_DATE,
'maxDate': MAX_DATE
}))
每次从视图调用表单时,如何修改我的 MIN_DATE
和 MAX_DATE
表单属性?
您可以在表单的 __init__
方法中实现此目的,如下所示:
class TableEdit(forms.Form):
Account = forms.CharField(label='Account', max_length=10)
Hedge = forms.CharField(label='Hedge', max_length=10)
Date = forms.DateField()
def __init__(self, *args, **kwargs):
super(TableEdit, self).__init__(*args, **kwargs)
min_date = dt.datetime.today().strftime('%m-%d-%Y')
max_date = (dt.datetime.today() + dt.timedelta(days=92)).strftime('%m-%d-%Y')
self.fields['Date'].widget = DatePickerInput(
options={
'format': 'MM/DD/YYYY',
'minDate': min_date,
'maxDate': max_date
})