在视图上更改 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_DATEMAX_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
        })