2014-09-15 3 views
1

Я до сих пор довольно новичок в Django, поэтому, после окончания официального учебника, я пытаюсь узнать больше по шагам и пытается решить общие проблемы.jQuery локализация дампикера в django admin 1.7 + django-grappelli 2.6.1

В настоящее время я застрял в поиске (возможно, правильного) способа иметь локализованные датпикеры на странице администрирования моего приложения, которая работает с 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" ]); 

, но это выглядит, как будто я все еще далеко от делать это правильно. Какие-нибудь советы?

ответ

2

Я не думаю, что проблема связана с Django, но в основном связана с jQuery/Grappelli.
Насколько я помню, корабли Grappelli со своим собственным jQuery (администратор Django делает то же самое) и использует пространство имен, чтобы избежать конфликтов, поэтому вызывая $ .datepicker или jQuery.whatever не будет взаимодействовать с jQuery Grappelli.

Если ui.datepicker-it.js выглядит следующим образом:

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

Попробуйте изменить его:

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

С grp.jQuery является пакет JQuery Grappelli следует использовать, как в Grappelli code

На стороне примечания, похоже, вы пытаетесь обслуживать файл .js, используя MEDIA_URL и MEDIA_ROOT (с учетом "/media/" на вашем пути), но я уверен, что предпочтительным способом обслуживания статических файлов и активов в Django является использование STATIC_ROOT и STATIC_URL. Во всяком случае, это касается лучших практик и не должно мешать вашему коду работать, так как вы сказали, что файл правильно загружен.

+0

Работает как очарование. И спасибо за другие бесплатные советы! – Seether

Смежные вопросы