Мне нравится Thauber Schedule datepicker, но это сборщик datetime, и я не могу заставить его делать только даты. Любые рекомендации для красивых пользователей datepickers, которые содержат инструкции по интеграции с полем формы даты Django?
Какая самая чистая, простая в использовании датапикер в Django?
Ответ 1
Вы также можете просто использовать Jquery в своих шаблонах. Функция jQuery DateTime Picker позволяет выполнять каждую настройку.
Ответ 2
Следующим является то, что я делаю, никаких внешних зависимостей вообще:
models.py:
from django.db import models
class Promise(models):
title = models.CharField(max_length=300)
description = models.TextField(blank=True)
made_on = models.DateField()
forms.py:
from django import forms
from django.forms import ModelForm
from .models import Promise
class DateInput(forms.DateInput):
input_type = 'date'
class PromiseForm(ModelForm):
class Meta:
model = Promise
fields = ['title', 'description', 'made_on']
widgets = {
'made_on': DateInput(),
}
мой взгляд:
class PromiseCreateView(CreateView):
model = Promise
form_class = PromiseForm
И мой шаблон:
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create" />
</form>
Выбор даты выглядит следующим образом:
Ответ 3
Django TextInput виджет (и все его подклассы) поддерживает указание атрибута типа для установки типа формы.
Вы можете использовать это, чтобы установить тип ввода date
(спецификация W3C), например, следующим образом:
date = fields.DateField(widget=forms.widgets.DateInput(attrs={'type': 'date'}))
Ответ 4
Если вам нравится виджет даты Django Admin, вы можете включить его в свое приложение. Преимуществом является отсутствие внешних зависимостей. Кто-то опубликовал руководство пользователя django-users некоторое время назад:
Ответ 5
Когда дело доходит до сборщиков даты, мой выбор - Bootstrap Datepicker. Вы можете реализовать его в своем приложении django, используя django-bootstrap-datepicker-plus, который работает как на новых, так и на старых версиях DJango. Я поддерживаю репозиторий и тестирую его, работая в DJango версий 1.8, 1.10, 1.11 и 2.0.4.
Настройка довольно проста. Вы просто устанавливаете это.
pip install django-bootstrap-datepicker-plus
Импортируйте виджет в ваш файл forms.py
from bootstrap_datepicker_plus import DatePickerInput
Добавьте виджет в поле даты
class ToDoForm(forms.Form):
date = forms.DateField(
widget=DatePickerInput(
options={
"format": "mm/dd/yyyy",
"autoclose": True
}
)
)
Подробные инструкции доступны на странице Github django-bootstrap-datepicker-plus.
Отказ от ответственности: этот пакет виджетов теперь принадлежит и поддерживается мной. Для любых проблем с ним не стесняйтесь открывать проблемы на странице Github.
Ответ 6
Я нашел это довольно гладким для DateTimeField
дружественной опции https://github.com/asaglimbeni/django-datetime-widget
Нужно было включить файл bootstrap-timepicker css из malot, и он работал довольно аккуратно.
Ответ 7
Будучи новее в кодировании, я использовал этот пример из-за его легкости.
<form method="POST">{% csrf_token %}
<p>Start date<input type = 'date' name='start_date' ></p>
<p>End date<input type = 'date' name='end_date' ></p>
<button type="submit">Submit</button>
</form>
Ответ 8
avi-решение также может быть выполнено без использования дополнительного класса ввода django:
class PromiseForm(ModelForm):
class Meta:
model = Promise
fields = ['title', 'description', 'made_on']
widgets = {
'made_on': DateInput(attrs={'type': 'date'}),
}
Ответ 9
Я боролся с подобной проблемой, и я нашел следующее решение приятным, используя гибкие формы:
Это работает очень хорошо и относительно легко реализовать, надеюсь, что кто-то найдет его полезным. Удачи.
Ответ 10
Используйте datetime-local
как тип ввода. Он не очень причудливый. Но будет выполнять Job
Ответ 11
Это то, что сработало для меня. Я использую Django 1.11 с начальной загрузкой 3.3.
Form.py
from django.contrib.admin.widgets import AdminDateWidget
class AddInterview(forms.ModelForm):
class Meta:
model = models.Interview
fields = ['candidate', 'date', 'position', 'question_set']
date = forms.DateField(widget=AdminDateWidget())
Шаблон:
<form method="post">
<div class="form-group">
{% csrf_token %}
{{ form.media }}
{{ form.as_p }}
<p>Note: Date format is yyyy-mm-dd</p>
</div>
CSS: (в том же файле шаблона выше HTML)
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/forms.css' %}"/>
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/widgets.css' %}"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >
JS: (в том же файле шаблона выше HTML)
<script type="text/javascript" src="/admin/jsi18n/"></script>
<script type="text/javascript" src="{% static 'admin/js/core.js' %}"></script>
<script type="text/javascript" src="{% static 'admin/js/admin/RelatedObjectLookups.js' %}"></script>
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.min.js' %}"></script>
<script type="text/javascript" src="{% static 'admin/js/jquery.init.js' %}"></script>
<script type="text/javascript" src="{% static 'admin/js/actions.min.js' %}"></script>
<script type="text/javascript" src="{% static 'admin/js/calendar.js' %}"></script>
<script type="text/javascript" src="{% static 'admin/js/admin/DateTimeShortcuts.js' %}"></script>
Ответ 12
Это то, что я делаю, чтобы получить DatePicker в формах Django.
установить bootstrap_datepicker_plus с помощью команды pip.
pip install django-bootstrap_datepicker_plus
forms.py
from .models import Hello
from django import forms
from bootstrap_datepicker_plus import DatePickerInput
class CreateForm(forms.ModelForm):
class Meta:
model = Hello
fields =[
"Date",
]
widgets = {
'Date': DatePickerInput(),
}
settings.py
INSTALLED_APPS = [
'bootstrap_datepicker_plus',
]