Python 在Django表单中输入有效的日期/时间
每当我尝试在表单中输入datetime时,它总是说输入一个有效的日期/时间 我尝试了不同的日期时间格式;我指定的和默认的,它们都不起作用。 我在堆栈溢出上尝试了不同的解决方案,但它们似乎都不起作用。 我遇到此问题的字段是到期日 注意:我没有显示任何导入 另外,我需要为优秀的约会时间选择者提供建议。由于某种原因,我试过的所有方法都不起作用 视图。py:Python 在Django表单中输入有效的日期/时间,python,django,django-forms,Python,Django,Django Forms,每当我尝试在表单中输入datetime时,它总是说输入一个有效的日期/时间 我尝试了不同的日期时间格式;我指定的和默认的,它们都不起作用。 我在堆栈溢出上尝试了不同的解决方案,但它们似乎都不起作用。 我遇到此问题的字段是到期日 注意:我没有显示任何导入 另外,我需要为优秀的约会时间选择者提供建议。由于某种原因,我试过的所有方法都不起作用 视图。py: @login_required def task_create(request): data = dict() #, data=reque
@login_required
def task_create(request):
data = dict()
#, data=request.POST
if request.method == 'POST':
form = TaskForm(request.user, data=request.POST)
if form.is_valid():
form.save()
data['form_is_valid'] = True
else:
data['form_is_valid'] = False
else:
form = TaskForm(request.user)
context = {'form': form}
data['html_form'] = render_to_string('partial_task_create.html',
context,
request=request
)
return JsonResponse(data)
class TaskForm(ModelForm):
due_date = forms.DateTimeField(input_formats=['%I:%M %p %d-%b-%Y'])
parent = forms.ModelChoiceField(queryset=Task.objects.all(), empty_label="---None---", required=False)
#widget=DateTimePickerInput(format='%I:%M %p %d-%m-%Y')
class Meta:
model = Task
fields = ['task_title', 'task_description', 'due_date', 'is_completed', 'categories', 'parent']
widgets = {
#'due_date': DateTimeInput()
}
def __init__(self, user, *args, **kwargs):
super(TaskForm, self).__init__(*args, **kwargs)
self.fields['categories'].queryset = Categories.objects.filter(Q(user_id__isnull=True) | Q(user_id=user.id))
forms.py:
@login_required
def task_create(request):
data = dict()
#, data=request.POST
if request.method == 'POST':
form = TaskForm(request.user, data=request.POST)
if form.is_valid():
form.save()
data['form_is_valid'] = True
else:
data['form_is_valid'] = False
else:
form = TaskForm(request.user)
context = {'form': form}
data['html_form'] = render_to_string('partial_task_create.html',
context,
request=request
)
return JsonResponse(data)
class TaskForm(ModelForm):
due_date = forms.DateTimeField(input_formats=['%I:%M %p %d-%b-%Y'])
parent = forms.ModelChoiceField(queryset=Task.objects.all(), empty_label="---None---", required=False)
#widget=DateTimePickerInput(format='%I:%M %p %d-%m-%Y')
class Meta:
model = Task
fields = ['task_title', 'task_description', 'due_date', 'is_completed', 'categories', 'parent']
widgets = {
#'due_date': DateTimeInput()
}
def __init__(self, user, *args, **kwargs):
super(TaskForm, self).__init__(*args, **kwargs)
self.fields['categories'].queryset = Categories.objects.filter(Q(user_id__isnull=True) | Q(user_id=user.id))
您需要在到期日表单字段上设置widget属性,以匹配输入格式。 比如:
due_date = forms.DateTimeField(input_formats=['%I:%M %p %d-%b-%Y'],
widget = forms.DateTimeInput(
attrs={'type': 'datetime-local'},
format='%I:%M %p %d-%b-%Y'))
对于日期时间选择器,请查看在我尝试此操作后,它将页面上的元素从TextField更改为datetime字段(格式为mm/dd/yyyyy--:--),只允许下拉日期。。。在我选择了一个日期和时间后,它仍然会显示相同的内容,输入一个有效的日期/时间,或者尝试将您的输入格式更改为文档中的以下格式之一: