Python / Django- forms.DateTimeField限制可用值

时间:2016-12-14 13:45:33

标签: python django forms validation user-input

我有一个Python / Django项目,在其中一个表单上,我给用户一个'日期/时间'选择日期和字段的字段是时候开会了。

表单中的字段定义(在forms.py中)写为:

class presentationForm(ValidatedForm):
    ...
    presentation_date = mDateTimeField(required=False, widget=forms.DateTimeInput(format='%d/%m/%Y %H:%M', attrs=({'class':'datetimepicker presentation_date', 'name':'presentation_date2'})))
    ...
    def __init__(self, *args, **kwargs):
        ...
        budget = self.instance
        if hasattr(budget, 'id'):
            ...
            if budget.presentation_date:
                pres_meeting = budget.meeting or Meeting.objects.create(project=budget.project, purpost='7')
                ...
                if not budget.meeting:
                    budget.meeting = pres_meeting
                    budget.save()
                if not budget.meeting or not pres_meeting.date:
                    pres_meeting.date = budget.presentation_date
                    pres_meeting.save()
        else: self.presenters = []

        super(BudgetPresentationForm, self).__init__(*args, **kwargs)

        self.fields['presentation_date'].widget.attrs.update({'data-meeting-id': getattr(self,'pres_meeting_id', ''), 'data-meeting-creator': getattr(self,'pres_meeting_creator', '')})

BudgetPresentationFormset = inlineformset_factory(Project, Budget, form= BudgetPresentationForm, max_num=30, extra=1, can_delete=False)

我在'日期/时间'中遇到的问题?表单上的字段是,虽然用户可以滚动浏览日历,当他们在字段中单击时显示为下拉列表(他们可以按照他们喜欢的方式向后/向前滚动),但只有01/01 /之间的日期/ 2015年1月1日至2017年1月1日可供选择 - 2015年1月1日之前或2017年1月1日之后的所有其他日期都是灰色的'并且无法选择它们。

显然,由于它现在接近01/01/2017,用户需要能够选择超出此范围的日期,以便安排未来的会议。

如果我右键点击mDateTimeField,然后选择“转到定义”,我会看到一个类定义(也在forms.py中),显示mDateTimeField定义为:

class mDateTimeField(forms.DateTimeField):
  def __init__(self, *args, **kwargs):
    kwargs.setdefault('input_formats', DATETIME_INPUT_FORMATS)
    # kwargs.setdefault('localize', True)
    super(mDateTimeField, self).__init__(*args, **kwargs)

因此mDateField明确地继承自forms.DateTimeField,但我无法看到“开始日期”,“结束日期”等任何地方。或者' max'或者' min'值是为presentation_date变量定义的......那么为什么可供选择的日期值被限制在过去两年内的日期?

我在这里找不到什么东西?

修改

如果我右键点击datetimepicker设置为presentation_date的行上的mDateTimeField(...),然后选择'转到定义',它需要我一个名为jquery.datetimepicker.full.js的文件,我在本地目录中的任何地方都看不到,所以我假设是一个来自项目使用的库的文件?

让Google知道这一点,datetimepicker似乎是https://github.com/xdan/datetimepicker提供的插件...鉴于这种情况,我可以在我的计算机上本地修复此问题,或者我需要联系开发人员来解决这个问题吗?

0 个答案:

没有答案