Какой самый простой и удобный инструмент для выбора дат в Django? - PullRequest
35 голосов
/ 30 июля 2010

Мне нравится Расписание даты в Thauber , но это средство выбора даты и времени, и я не могу заставить его просто делать даты.Какие-нибудь рекомендации для симпатичных сборщиков дат, которые идут с инструкциями по интеграции с полем формы даты Django?

Ответы [ 11 ]

31 голосов
/ 13 марта 2016

Вот что я делаю, никаких внешних зависимостей вообще:

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>

Выбор даты выглядит так:

enter image description here

18 голосов
/ 30 июля 2010

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

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

16 голосов
/ 06 августа 2016

Виджет Django TextInput (и все его подклассы) поддерживает указание атрибута типа для установки типа формы.

Вы можете использовать это для установки типа ввода date( W3C спецификация ), например, следующим образом:

date = fields.DateField(widget=forms.widgets.DateInput(attrs={'type': 'date'}))
9 голосов
/ 02 марта 2018

Когда дело доходит до сборщиков даты, я выбираю 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
                }
            )
        )

Подробные инструкции доступны на странице django-bootstrap-datepicker-plus Github Page .

Отказ от ответственности: Этот пакет виджетов теперь принадлежит мне и поддерживается. Для любых проблем с ним, не стесняйтесь открывать проблемы на Github Page .

3 голосов
/ 30 января 2017

Решение avi также может быть выполнено без использования дополнительного входного класса django:

class PromiseForm(ModelForm):

    class Meta:
        model = Promise
        fields = ['title', 'description', 'made_on']
        widgets = {
            'made_on': DateInput(attrs={'type': 'date'}),
        }
3 голосов
/ 08 августа 2015

Будучи новичком в кодировании, я использовал этот пример из-за его простоты.

<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>
2 голосов
/ 06 июня 2013

Я нашел это довольно гладким для DateTimeField дружественного варианта https://github.com/asaglimbeni/django-datetime-widget

Необходимо включить файл начальной загрузки-загрузки с malot , и он работал довольно аккуратно.

0 голосов
/ 23 января 2019

Это то, что я делаю, чтобы получить указатель даты в формах 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',
]
0 голосов
/ 08 октября 2018

Вот что у меня сработало.Я использую 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>
0 голосов
/ 18 июня 2016

Используйте datetime-local в качестве типа для ввода. Не очень причудливый вид. Но сделаю работу

Надеюсь, это поможет. enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...