在Django TimeField中使用django-bootstrap3-datetime输入有效时间
我在用Django的Bootstrap日期时间选择器提交表单时遇到了时间验证的问题。当我提交这个表单时,出现了“请输入一个有效的时间。”的错误提示。
models.py:
class Appointment(models.Model):
date = models.DateField()
time = models.TimeField()
forms.py:
valid_time_formats = ['%P', '%H:%M%A', '%H:%M %A', '%H:%M%a', '%H:%M %a']
date = forms.DateField(
widget=DateTimePicker(options={"format": "MM/DD/YYYY",
"pickTime": False,
"showToday": True,
}))
time = forms.TimeField(
widget=DateTimePicker(options={
"pickTime": True,
"pickDate": False,
"minuteStepping": 1,
"sideBySide": True,
}),
input_formats = valid_time_formats
)
class Meta:
model = Appointment
fields = (
'date',
'time',
'duration',
'cost',
)
如果有帮助的话,模板如下:
{% extends 'scheduling/base_scheduling.html' %}
{% load bootstrap3 %}
{% block title %}New Appointment{% endblock %}
{% block external %}
<link rel="stylesheet"
href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.css">
<link rel="stylesheet"
href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.js">
</script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.js">
</script>
{{ form.media }}
{% endblock %}
{% block content %}
{# Load CSS and JavaScript #}
{% bootstrap_css %}
{% bootstrap_javascript %}
{# Display django.contrib.messages as Bootstrap alerts #}
{% bootstrap_messages %}
{# Display a form #}
<h1>New Appointment for {{client.full_name}}</h1>
<form action="{% url 'client_appointment_add' client.id %}" method="post" class="form">
{% csrf_token %}
{% bootstrap_form form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
{% bootstrap_icon "save" %} Submit
</button>
{% endbuttons %}
</form>
{% endblock %}
1 个回答
0
我也遇到过同样的错误。仅仅在表单中设置日期格式是不够的。
我通过正确配置我的Django日期时间设置解决了这个问题。
想知道怎么做得对,可以看看我在这里的回答:如何在Django管理后台将DateTimeField格式化为当地时间? 在那里你还会找到一个示例项目的链接,里面有正确的配置。
我现在用bootstrap3_datetime
和bootstrap3
测试过了,效果很好,所以你也应该能用。