我有一个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提供的插件...鉴于这种情况,我可以在我的计算机上本地修复此问题,或者我需要联系开发人员来解决这个问题吗?