更改视图上的Django表单属性

问题描述 投票:1回答:1

我正在使用带有DatePicker小部件的Django表单。我必须在类级别定义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表单属性?

django forms view django-forms bootstrap-datepicker
1个回答
0
投票

您可以通过表单的__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
        })
© www.soinside.com 2019 - 2024. All rights reserved.