django admin 1.7 + django-grappelli 2.6.1 中的 jQuery datepicker 本地化

Posted

技术标签:

【中文标题】django admin 1.7 + django-grappelli 2.6.1 中的 jQuery datepicker 本地化【英文标题】:jQuery datepicker localization in django admin 1.7 + django-grappelli 2.6.1 【发布时间】:2014-11-09 05:42:04 【问题描述】:

我对 Django 还是很陌生,所以在完成官方教程后,我正在尝试逐步学习更多内容并尝试解决常见问题。

我目前一直在寻找一种(可能是正确的)方法来在我的应用管理页面中使用本地化日期选择器,该方法适用于 django-grappelli。

我试图直接修改 grappelli 文件,但我觉得这绝对不是正确的方法。

我的应用程序非常简单,距离official tutorial 之后的位置不是很远。

我稍微修改了 admin.py 文件,如下所示:

[...]

@admin.register(Question)
class QuestionAdmin(admin.ModelAdmin):
    #fields = ['pub_date', 'question_text']
    #date_hierarchy = 'pub_date'
    class Media:
        js = ("/media/mytime/js/ui.datepicker-it.js",)

    list_display = ['question_text', 'pub_date']
    fieldsets = [
        (None,                  'fields': ['question_text']),
        ('+ Date information',  'fields': ['pub_date'], 'classes': ['grp-collapse grp-closed']),
    ]
    inlines = [ChoiceInline]
    actions = ['prepend_letter']

[...]

通过添加:

class Media:
    js = ("/media/mytime/js/ui.datepicker-it.js",)

并将文件正确放入媒体目录,现在文件在浏览问题修改页面时出现在页面源代码中。

太糟糕了,这似乎还不够,因为日期选择器仍然显示为未翻译。

我什至尝试通过控制台直接注入该行:

$.datepicker.setDefaults( $.datepicker.regional[ "it" ] );

但看起来我还远远没有做对。有什么建议吗?

【问题讨论】:

【参考方案1】:

我认为问题与 Django 无关,但主要与 jQuery/Grappelli 相关。 据我所知,Grappelli 带有自己的 jQuery(Django 管理员也是如此),并使用命名空间来避免冲突,因此调用 $.datepicker 或 jQuery.whatever 不会与 Grappelli 的 jQuery 交互。

如果你的ui.datepicker-it.js 看起来像这样:

jQuery(function($)
  // do something on $.datepicker ...
);

尝试更改它:

(function($)
  // do something on $.datepicker ...
)(grp.jQuery);

grp.jQuery 是 Grappelli 应该使用的 jQuery 包,如 Grappelli code

附带说明,您似乎正在尝试使用 MEDIA_URLMEDIA_ROOT 提供 .js 文件(鉴于路径中的 "/media/" 部分),但我很确定首选方式在 Django 中提供静态文件和资产是使用 STATIC_ROOTSTATIC_URL。无论如何,这只是最佳实践,不应阻止您的代码以任何方式工作,因为您说文件已正确加载。

【讨论】:

像魅力一样工作。并感谢您提供其他免费提示!

以上是关于django admin 1.7 + django-grappelli 2.6.1 中的 jQuery datepicker 本地化的主要内容,如果未能解决你的问题,请参考以下文章

win10搭建django2.1.7开发环境,定义简易视图及网址

第三方模型的 Django 管理操作

如何创建一个Django网站

Django 1.7 vs Django1.6 vs Django 1.5 [关闭]

Django 1.7 中的 Django-migrations 检测模型更改,但不会在迁移时应用它们

Django 自定义管理操作:如何在完成时取消选择?