2012-05-14 3 views
15

Я пытаюсь использовать Виджеты администратора с паролем DateField в моем формуляре, но только первый из них отображает правильно виджет, для другого я получаю сообщение об ошибке:Uncaught ReferenceError: django не определен

DateTimeShortcuts.js:205 Uncaught ReferenceError: django is not defined

(линия указана:

django.jQuery(document).bind('keyup', function(event) { 

)

Вот мой шаблон головы:

<head> 
{% load adminmedia %} 
<link rel="stylesheet" href="/static/css/main.css" /> 
<script type="text/javascript" src="/admin/jsi18n/"></script> 
<script type="text/javascript" src="/static/admin/js/core.js"></script> 
<script type="text/javascript"> 
    window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}"; 
</script> 
<link rel="stylesheet" type="text/css" href="/static/admin/css/forms.css"/> 
<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css"/> 
<!-- <link rel="stylesheet" type="text/css" href="/static/admin/css/global.css"/> --> 
<link rel="stylesheet" type="text/css" href="/static/admin/css/widgets.css"/> 
{{ form.media }}... 

Мои модели поля:

start_date = models.DateField() 
end_date = models.DateField() 

И мой класс формы:

class UserForm(ModelForm): 
    start_date = forms.DateField(
     widget=widgets.AdminDateWidget 
     ) 
    end_date = forms.DateField(
     widget=widgets.AdminDateWidget 
     ) 
    class Meta: 
     model = User 

Я предполагаю, что это какой-то делает это правило, но я совершенно запутался. Любая помощь приветствуется!

+1

Пробовали ли вы использовать носитель формы через класс «Медиа», как описано в документах? https://docs.djangoproject.com/ru/dev/topics/forms/media/#s-media-as-a-static-definition –

ответ

29

django.jQuery определено в django/contrib/admin/static/admin/js/jquery.init.js и полагается на django/contrib/admin/static/admin/js/jquery.js. Вы должны загрузить эти файлы JS в шаблоне непосредственно

<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script> 
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script> 

Или включить эти файлы в your form media

Также проверьте media свойство ModelAdmin.

+0

Обратите внимание, что в последних версиях Django jQuery находится в 'vendor/jquery/jquery.js' вместо 'jquery.min.js'. –

+0

На самом деле, в Django 1.11 файл находится в 'vendor/jquery' в полной мере, а также в миниатюрной версии. (См. Https://github.com/django/django/blob/master/django/contrib/admin/options.py#L582) –

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