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_URL
和 MEDIA_ROOT
提供 .js 文件(鉴于路径中的 "/media/"
部分),但我很确定首选方式在 Django 中提供静态文件和资产是使用 STATIC_ROOT
和 STATIC_URL
。无论如何,这只是最佳实践,不应阻止您的代码以任何方式工作,因为您说文件已正确加载。
【讨论】:
像魅力一样工作。并感谢您提供其他免费提示!以上是关于django admin 1.7 + django-grappelli 2.6.1 中的 jQuery datepicker 本地化的主要内容,如果未能解决你的问题,请参考以下文章
win10搭建django2.1.7开发环境,定义简易视图及网址
Django 1.7 vs Django1.6 vs Django 1.5 [关闭]