from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
class MyForm(Form):
my_field = DateField(widget=AdminDateWidget)
from django.forms.widgets import NumberInput
# label and required are both optional arguments
date_input = forms.DateTimeField(label="Date", required=True, widget=NumberInput(attrs={'type':'date'}))
{% load adminmedia %} /* At the top of the template. */
/* In the head section of the template. */
<script type="text/javascript">
window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}";
</script>
7条答案
按热度按时间yruzcnhs1#
考虑使用Django内置的普通“SelectDateWidget”来代替Admin小部件:https://docs.djangoproject.com/en/stable/ref/forms/widgets/#selectdatewidget
fdbelqdn2#
django-admin使用的所有小部件都在django/contrib/admin/widgets.py文件中。只需将其作为表单中的常用小部件使用。您需要的是AdminDateWidget。
这将创建一个带有日历的日期选择器。您可以尝试通过扩展它来定制它,或者从AdminDateWidget中获得灵感从头开始创建新的小部件。
j91ykkif3#
我明白了,多亏了戴夫·S。还有一些关于这个主题的旧文章。我的成功方法:
创建自定义表单。
在顶部,使用
from django.contrib.admin.widgets import AdminDateWidget
导入管理小部件。然后,添加表单的不同字段,只要您想使用日期小部件,就使用my_field = DateField(widget = AdminDateWidget)
。创建表单模板
将以下内容放在顶部,以包含相应的css/js文件:
现在只需像正常一样输出表单,JS就会自动将其转换为日期字段。好好享受吧!
vfwfrxfs4#
您可以通过表单小部件“SelectDateWidget()”来完成此操作,如下所示:
xzabzqsa5#
使用django表单小部件NumberInput作为Django中任何datefield或datetimefield的小部件这将呈现基本的HTML NumberInput字段供用户选择。我刚刚测试了这个,如果你把它当作一个python
datetime
对象,当后端接收到日期时,它就可以工作了。13z8s7eq6#
这基本上是Using Django time/date widgets in custom form的副本。
@Dave S和@MrGlass已经给出了答案,但是对于Django 1.2和更高版本,还需要这个来帮助JavaScript找到管理媒体:
(from卡尔·迈耶的回答)
23c0lvtd7#
如果有人还在寻找一个整洁的解决方案,那么这里是我在互联网上找到的:
在文件'forms.py'中写入:
然后使用'views.py'中的表单:
你会看到这样的景象:date widget