Django/Python在datetime字段上设置最小/最大日期值

2024-09-28 21:53:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django表单,上面显示了一个日期字段,它的数据类型为mDateField(一个扩展forms.DateField的自定义类)。定义见表单.py有:

class mDateField(forms.DateField):
    def __init__(self, *args, **kwargs):
        kwargs.setdefault('input_formats', DATE_INPUT_FORMATS)
        super(mDateField, self).__init__(*args, **kwargs)

现在,我想为该日期字段设置一个“最小”和“最大”可能值(即,与该值可以设置为的日期相关的过去或将来的某个时间长度的日期)。在

我在SO:jquery datetime picker set minDate dynamic上找到了这个答案,并试着按照它所说的写下一行:

^{pr2}$

但是当我这样做时,我在控制台中得到一个语法错误,它指向$,并说:

SyntaxError: invalid syntax

我在这里做的有什么不对?如何指定要在datepicker中显示的最早/最晚日期是什么?在

在定义了datetimepicker的jQuery文件中编辑(jquery.datetimepicker.full.js),有以下几行:

if (options.minDate && /^[\+\-](.*)$/.test(options.minDate)) {
    options.minDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.minDate), options.formatDate);
}

if (options.maxDate &&  /^[\+\-](.*)$/.test(options.maxDate)) {
    options.maxDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.maxDate), options.formatDate);
}

但我不明白这些是如何将值设置为任何实际日期的。。。?在


Tags: self表单datetime定义initargsformsjquery
1条回答
网友
1楼 · 发布于 2024-09-28 21:53:23

好的,首先-从python文件中删除javascript代码;)。 第二,任何对django表单的验证都必须在服务器(django)上完成,而不是在前端(JS)上!所以,你可以做两件事:
1) 编写自定义小部件并将其添加到您的datefield(这更难)。
2) 使用django默认日期域(https://docs.djangoproject.com/en/1.10/ref/forms/fields/#datefield):

presentation_date = forms.DateField()

如果使用默认的DateField,则可以在form类中编写自定义方法,命名为(clean_your_field_name),在您的情况下,它将被称为clean_presentation_date:

^{pr2}$

相关问题 更多 >