Подтвердить что ты не робот

Какая самая чистая, простая в использовании датапикер в Django?

Мне нравится Thauber Schedule datepicker, но это сборщик datetime, и я не могу заставить его делать только даты. Любые рекомендации для красивых пользователей datepickers, которые содержат инструкции по интеграции с полем формы даты Django?

4b9b3361

Ответ 1

Вы также можете просто использовать Jquery в своих шаблонах. Функция jQuery DateTime Picker позволяет выполнять каждую настройку.

http://jqueryui.com/demos/datepicker/

Ответ 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.

bootstrap datepicker

Настройка довольно проста. Вы просто устанавливаете это.

  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.

Ответ 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',
]