Интегрировать виджет календаря в приложение Django

Как интегрировать виджет календаря в мою систему? Я хочу добавить виджет календаря в мою форму, которая была разработана в Django. Я прилагаю скриншот, показывающий, где я хочу его интегрировать. Кроме того, я хочу, чтобы виджет календаря был похож на http://www.dynarch.com/projects/calendar/.

Какой файл мне нужно изменить и какой код мне нужно использовать?

4 ответа

Решение

forms.py

import datetime
from django.forms.extras.widgets import SelectDateWidget
from django.forms import ModelForm, Form

date_field = forms.DateField(widget=SelectDateWidget)

или же есть и другой способ использования Javascript. Использование виджетов времени и даты Django в пользовательской форме может быть полезным.

Я понял. Вам просто нужно активировать интерфейс администратора в settings.py и импортировать AdminDateWidget вместо SelectDateWidget в файле forms.py. Также вставьте следующий код в файл шаблона формы. Обязательно поместите его между тегами. вот код:

<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/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>

Надеюсь, что это кому-нибудь пригодится, ура!

Саадат

После долгой борьбы мне удалось заставить его работать на Django 2.0.2. Вам нужно следующее в шапке шаблона:

<script type="text/javascript" src="/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>

<link rel="stylesheet" type="text/css" href="{% static 'admin/css/forms.css' %}"/>
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/base.css' %}"/>
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/widgets.css' %}"/>

urls.py

from django.views.i18n import JavaScriptCatalog


urlpatterns = [
    ...
    path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),

]

И тогда форм.пи

from django import forms
from .models import MyModel
from django.contrib.admin.widgets import AdminDateWidget


class TripDetailForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'
        widgets = {
            'my_field': AdminDateWidget(),
}

С этим кодом вы должны быть хорошими, чтобы идти.

Просто совет для людей, которые используют Django_filters и хотят, чтобы в календаре администратора отображались поля даты (Ex Date больше чем) . Вам нужно объявить виджет в созданном вами фильтре.

Как это:

class InterviewFilter(django_filters.FilterSet):

    start_date = django_filters.DateFilter(name='date',lookup_expr=('gt'), widget=AdminDateWidget())
    end_date = django_filters.DateFilter(name='date',lookup_expr=('lt'), widget=AdminDateWidget()) 
    registry_year = django_filters.DateRangeFilter(field_name='date', lookup_expr='year')

    class Meta:
        model = Interview
        fields = ['position', 'result', 'status']
Другие вопросы по тегам