Django Model Form DateTimeField表单验证错误



我是一个django noobie,我对模型Datetimefield有问题。当我使用模型表格填写日期时间时,它显示请输入有效日期。

这是我的文件

Views.py

def Report_incident(request):
if request.method=='POST':
form=IncidentReportForm(request.POST)
if form.is_valid():
report=form.save(commit=False)
report.user=request.user
report.save()
return HttpResponse('Success')
else:
form=IncidentReportForm()
context={'form':form}
return render(request, 'Assginment/report.html',context)

这是模型表格.py

class DateTimeInput(forms.DateTimeInput):
input_type = 'datetime-local'

class IncidentReportForm(forms.ModelForm):
incident_cat=(
('Environmental incident','Environmental incident'),
('Injury/Illness','Injury/Illness'),
('Property Damage','Propert Damage'),
('Vehicle','Vehicle'),
)
time=forms.DateTimeField(widget=DateTimeInput(),
input_formats=['%d/%m/%Y %H:%M:%S'])
incident_type=forms.MultipleChoiceField(choices=incident_cat,
widget=forms.CheckboxSelectMultiple)
class Meta:
model=Incident
fields=('location','description','incident_location',
'severity','cause','action_taken')

这是我的Model s.py部件

class Incident(models.Model):
location_choices=(
('Corporate Headoffice','Corporate Headoffice'),
('Operations Department','Operations Department'),
('Work Station','Work Station'),
('Marketing Division','Marketing Division'),
)
severity_choices=(
('Mild','Mild'),
('Moderate','Moderate'),
('Severe','Severe'),
('Fatal','Fatal'),
)
location=models.CharField(choices=location_choices,max_length=300,
default='Corporate Headoffice')
description=models.TextField()
time=models.DateTimeField()
incident_location=models.CharField(max_length=200)
severity=models.CharField(max_length=200,choices=severity_choices,
default='Mild')
cause=models.TextField()
action_taken=models.TextField()
incident_type=models.CharField(max_length=200,null=True,blank=True)
reporter=models.ForeignKey(MyUser, on_delete=models.CASCADE,
related_name='reporter')

我的模板

{% extends "base.html" %}
{% block title %}Report An Incident {% endblock %}
{% block content %}
<form method="POST">
{{ form.as_p }}
{% csrf_token %}
<input type="submit" value="Report Incident">
</form>
<p>{{ cd }}</p>
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endif %}
{% endblock %}

我猜问题出在日期时间的形式上,请解释我做错了什么。

您在'IncidentReportForm'中的输入格式为'%d/%m/%Y%H:%m:%S'。Django数据库不能接受这种日期格式。因此,您应该将">input_formats"更改为"%d-%m-%Y%H:%m:%S">我认为它会起作用!

最新更新