我还是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" ] );
但看起来我还没有做得对。有什么提示吗?
答案 0 :(得分:2)
我不认为这个问题与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
(在您的路径中给定"/media/"
部分)来提供.js文件,但是我非常确定在Django中提供静态文件和资源的首选方法是使用STATIC_ROOT
和STATIC_URL
。无论如何,这只是最佳实践,不应该阻止您的代码以任何方式工作,因为您说文件已正确加载。