django:使用管理员日期选择器
Posted
技术标签:
【中文标题】django:使用管理员日期选择器【英文标题】:django : using admin datepicker 【发布时间】:2010-10-14 05:43:08 【问题描述】:我正在尝试在我自己的 django 表单中使用管理员日期选择器。
大致关注这里的讨论:http://www.mail-archive.com/django-users@googlegroups.com/msg72138.html
我已经
a) 在我的 forms.py 中包含了这一行
from django.contrib.admin import widgets
b) 并像这样使用小部件:
date = forms.DateTimeField(widget=widgets.AdminDateWidget())
c) 在我的实际模板中,我添加了:
form.media
要包含js/样式等
但是,当我尝试查看我的表单时,我没有得到漂亮的小部件;只是一个普通的文本框。 Firefox javascript 错误控制台向我展示了:
gettext 未在 calendar.js 中定义(第 26 行)
和
addEvent 没有在 DateTimeShortcuts.js 中定义(第 254 行)
有什么建议吗?这是 Django 自己的 javascript 库中的错误吗?
更新:基本上,需要包含核心和(或假的)i18lization
更新 2:Carl 指出这几乎与 Using Django time/date widgets in custom form 重复(尽管从不同的位置开始)
【问题讨论】:
这个问题是重复的。在这里查看答案:***.com/questions/38601/… 谢谢 ... 有趣的是,这并没有出现在任何“相关问题”中 Carl Meyer 引用的问题的答案清楚地表明,这是一个需要大量工作的答案,而不仅仅是使用 jQuery 或其他一些知名库实现您自己的日期选择器。跨度> 几年后,现在有了一些替代方案,例如using the browser's built-in date picker。无需 javascript 或 css。 【参考方案1】:不,这不是错误。
它试图在 js 中调用 gettext() 国际化函数。您可以像在 python 代码或模板中一样进行 js 国际化,这只是一个鲜为人知的功能。
如果你的项目中不使用 js 国际化,你可以放。
<script>function gettext(txt) return txt </script>
在您的顶部模板中,这样 js 解释器就不会阻塞。
我知道这是一种解决问题的 hacky 方法。
编辑:
或者您可以包含确切的 jsi18n js django 管理员引用,以使其即使与其他语言一起工作。不知道是哪一个。
这是今天在 django-users 上发布的:
http://groups.google.com/group/django-users/browse_thread/thread/2f529966472c479d#
也许是你,以防万一。
【讨论】:
谢谢...是的,它很老套,但它让我暂时解决了这个问题 感谢您的链接,它写得很好,使过程清晰,感觉不那么hacky。【参考方案2】:我想我通过将这些行显式添加到我的模板中解决了前半部分:
<script type="text/javascript" src="../../../jsi18n/"></script>
<script type="text/javascript" src="/admin_media/js/core.js"></script>
<script type="text/javascript" src="/admin_media/js/admin/RelatedObjectLookups.js"></script>
但它仍然报告不知道 gettext
【讨论】:
如果您的 url 映射中没有它,那么添加 jsi18n 是没有意义的。如果您在 urls.py 中添加正确的内容,这就是 gettext 函数所在的位置: urlpatterns = patterns('', (r'^jsi18n/(?P您可能会找到以下适合您的作品:
<link href="/media/css/base.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript" src="/admin/jsi18n/"></script>
<script type="text/javascript" src="/media/js/core.js"></script>
form.media
【讨论】:
以上是关于django:使用管理员日期选择器的主要内容,如果未能解决你的问题,请参考以下文章