5

如何在我的系统中集成日历小部件?我希望将日历小部件添加到我的表单中,该表单是用 Django 设计的。我附上了一个屏幕截图,显示了我想在哪里集成它。另外,我希望日历小部件类似于http://www.dynarch.com/projects/calendar/

我需要修改什么文件,需要使用什么代码?

在此处输入图像描述

4

4 回答 4

13

forms.py

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

date_field = forms.DateField(widget=SelectDateWidget)

or else there is also a another way using Javascript Using Django time/date widgets in custom form it may be helpful

于 2012-10-08T09:18:20.993 回答
9

我想到了。您只需要在 settings.py 中激活管理界面并在 forms.py 文件中导入 AdminDateWidget 而不是 SelectDateWidget。此外,将以下代码插入到表单的模板文件中。确保将其放在标签之间。这是代码:

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

希望它对某人有用,干杯!

萨达特

于 2012-10-16T13:52:50.757 回答
5

经过长时间的努力,我设法让它在 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' %}"/>

网址.py

from django.views.i18n import JavaScriptCatalog


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

]

然后是forms.py

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(),
}

使用此代码,您一定可以顺利进行。

于 2018-03-03T10:35:52.970 回答
0

只是给使用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']
于 2018-10-16T20:23:10.740 回答