我想了解 Django 表单。
<div class="form-group">
<label for="deadline">Deadline</label>
<input
type="datetime-local"
class="form-control"
id="deadline"
aria-describedby="deadlineHelp"
placeholder="Enter when deadline"
/>
</div>
Run Code Online (Sandbox Code Playgroud)
我想用 Django 创建这个字段。但
<form action="" method="post">{% csrf_token %} {{form.as_p}}</form>
Run Code Online (Sandbox Code Playgroud)
创建简单的线条。如果我修复 forms.py 像
class Create(forms.ModelForm):
class Meta:
model = Task
fields = ('deadline_task',)
widgets = {
'deadline_task': forms.DateTimeInput(),
}
Run Code Online (Sandbox Code Playgroud)
它不起作用。
<p><label for="id_deadline_task">Deadline task:</label> <input
type="text" name="deadline_task" id="id_deadline_task"></p>
Run Code Online (Sandbox Code Playgroud)
我只是想要<input type="datetime-local" - 方便选择日期。
谢谢。
聚苯乙烯Django 1.11
正如所指出的,当前接受的解决方案显示正确的 HTML5 小部件,但从前端小部件返回的值不会被后端的字段验证接受。
一个可行的解决方案是使用datetime-local小部件以及DateTimeField识别日期时间格式的自定义:
from django import forms
class DateTimeLocalInput(forms.DateTimeInput):
input_type = "datetime-local"
class DateTimeLocalField(forms.DateTimeField):
# Set DATETIME_INPUT_FORMATS here because, if USE_L10N
# is True, the locale-dictated format will be applied
# instead of settings.DATETIME_INPUT_FORMATS.
# See also:
# https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats
input_formats = [
"%Y-%m-%dT%H:%M:%S",
"%Y-%m-%dT%H:%M:%S.%f",
"%Y-%m-%dT%H:%M",
]
widget = DateTimeLocalInput(format="%Y-%m-%dT%H:%M")
class Form(forms.Form):
my_datetime_field = DateTimeLocalField()
Run Code Online (Sandbox Code Playgroud)
小智 7
我有完全相同的问题并以这种方式解决:
widgets = {
'request_date': DateTimeInput(attrs={'type': 'datetime-local'}),
}
Run Code Online (Sandbox Code Playgroud)