django admin是一个很好的数据录入类的后台管理框架,但日期时间的输入插件并不理想。截至django v2.2,默认的插件是这样的:
日期和时间分开,且时间只能选取有限的几个关键时刻,显然不是很好用。
网上有些人试图把jQuery里的datetimepicker集成进django,但做的不太干净,有许多坑需要很多注意避免。这里总结一下:
安装
在自己的django目录里直接拷贝:
git clone https://github.com/escodebar/django-datetimepicker.git
配置
在settings.py里的INSTALLED_APPS里加入‘datetimepicker’
使用方法
为你的Admin类重写一个Form类:
from django import forms
from datetimepicker.widgets import DateTimePicker
class MyModelAdminForm(forms.ModelForm):
some_datetime_field = forms.DateTimeField(
widget=DateTimePicker(
format_string = '%Y-%m-%d %H:%M',
),
)
你会发现不能工作,有很多报错。这是由于django 2.2引入了一些不兼容的代码。需要对datetimepicker的源码做两处修改。首先修改widget.py文件,加入一个新的参数renderer,一定要给一个默认值None,其次把_format_value改为format_value(去掉开头的下划线):
def render(self, name, value, attrs=None, renderer=None, prefix='datet