如何在我的系统中集成日历小部件?我希望将日历小部件添加到我的表单中,该表单是在Django中设计的。我附上了一个屏幕截图,显示了我想要整合它的位置。另外,我希望日历小部件与http://www.dynarch.com/projects/calendar/类似。
我需要修改哪个文件以及需要使用哪些代码?
答案 0 :(得分:10)
forms.py
import datetime
from django.forms.extras.widgets import SelectDateWidget
from django.forms import ModelForm, Form
date_field = forms.DateField(widget=SelectDateWidget)
或者还有另一种使用Javascript Using Django time/date widgets in custom form的方法 它可能会有所帮助
答案 1 :(得分: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>
希望它对某人有用,欢呼!
萨达特
答案 2 :(得分:1)
经过长时间的努力,我设法让它适用于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' %}"/>
&#13;
urls.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(),
}
使用此代码,您一定很高兴。
答案 3 :(得分: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']