13

我正在尝试在我自己的 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的副本(尽管从不同的位置开始)

4

3 回答 3

5

不,这不是错误。

它试图在 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#

也许是你,无论如何,以防万一。

于 2009-03-19T03:42:13.737 回答
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

于 2009-03-19T03:46:03.337 回答
1

您可能会发现以下作品适合您:

<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 }} 
于 2009-03-26T12:42:14.353 回答