Виджет Django DateInput не отображает ничего, кроме ввода простого текста. Однако он проверяет вводимые пользователем данные в различных форматах, поэтому он не бесполезен.
Большинство людей ожидают, что оно будет вести себя так же, как и средство выбора даты, найденное в интерфейсе администратора Django, поэтому это определенно немного сбивает с толку.
Возможно использовать AdminDateWidget в ваших собственных приложениях, но я бы посоветовал против этого. Требуется много возни, чтобы заставить его работать .
Самое простое решение - использовать что-то вроде JQuery UI Datepicker . Просто включите следующее в <head>
вашей страницы:
<link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/redmond/jquery-ui.css" rel="Stylesheet" />
<script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js"></script>
Затем в нижней части поставьте следующую строку, чтобы активировать Datepicker для ваших элементов ввода:
<script type="text/javascript">
$(function(){
$("#id_birthday").datepicker();
});
</script>
Вы можете сделать это немного СУХИМ, если у вас много полей даты, создав собственный виджет в вашем forms.py
:
class JQueryUIDatepickerWidget(forms.DateInput):
def __init__(self, **kwargs):
super(forms.DateInput, self).__init__(attrs={"size":10, "class": "dateinput"}, **kwargs)
class Media:
css = {"all":("http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/redmond/jquery-ui.css",)}
js = ("http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js",
"http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js",)
Укажите, что каждое поле даты должно использовать этот виджет в ваших формах:
birthday = forms.DateField(label="Birthday", widget=JQueryUIDatepickerWidget)
И в свой шаблон включите следующее в <head>
:
{{form.media}}
И активируйте Datepicker для всех полей, поместив в нижней части страницы следующее:
<script type="text/javascript">
$(function(){
$(".dateinput").datepicker();
});
</script>