【问题标题】:Change Django Form Attribute on view在视图上更改 Django 表单属性
【发布时间】:2020-04-07 01:07:12
【问题描述】:

我正在使用带有 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】:

    您可以在表单的__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
            })
    

    【讨论】:

    • 非常感谢您的回答。我尝试了一个小时的类似语法,但我无法集中注意力。您的回答帮助我澄清并了解课程的运作方式!
    猜你喜欢
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多