MrG*_*ass 21 django django-forms
我正在尝试将日历日期输入添加到我的一个表单中.Django在其管理页面上使用了一个精彩的日历小部件,但我无法弄清楚如何将其添加到自定义表单中.
我在这里找到了关于同一主题的其他几个问题,但它们似乎都已过时,复杂且无法正常工作.
有没有办法将Django内置的日历小部件包含在我的一个表单中?
rog*_*err 18
而不是Admin小部件,请考虑使用Django中内置的常规"SelectDateWidget":https://docs.djangoproject.com/en/stable/ref/forms/widgets/#selectdatewidget
dav*_*ekr 10
django-admin使用的所有小部件都在django/contrib/admin/widgets.py文件中.只需将其用作表单中的常用窗口小部件即可.你想要的是AdminDateWidget.
from django.contrib.admin.widgets import AdminDateWidget
from django.forms.fields import DateField
class MyForm(Form):
my_field = DateField(widget=AdminDateWidget)
Run Code Online (Sandbox Code Playgroud)
这将创建一个带日历的日期选择器.您可以尝试通过扩展它来自定义它,或者从头开始创建一个新的小部件,其灵感来自AdminDateWidget.
MrG*_*ass 10
我想通了,感谢Dave S.和一些关于这个主题的老帖子.我成功的方法:
在顶部,使用导入管理窗口小部件from django.contrib.admin.widgets import AdminDateWidget
.然后,my_field = DateField(widget = AdminDateWidget)
只要您想使用日期窗口小部件,就可以使用表单的不同字段添加.
将以下内容放在顶部以包含相应的css/js文件:
{% load i18n admin_modify adminmedia %}
{% block extrahead %}{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/base.css" />
<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/widgets.css" />
<script type="text/javascript" src="/jsi18n/"></script>
<script type="text/javascript" src="{% admin_media_prefix %}js/core.js"></script>
{{ form.media }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
注意:根据您的Django版本以及如何实现表单字段,您不一定需要所有这些.这就是我发现我需要使用小部件.
现在只需输出正常的表单,JS就会自动将其转换为日期字段.请享用!
您可以通过表单小部件“SelectDateWidget()”来完成此操作,如下例所示:
class MyForm(forms.Form):
start_date=forms.DateField(widget = forms.SelectDateWidget())
end_date=forms.DateField(widget = forms.SelectDateWidget())
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
45437 次 |
最近记录: |