2012-05-14 22 views
15

Estoy tratando de usar los Admin Widgets con un par de DateField en mi formulario, pero solo el primero de ellos muestra el widget correctamente, para el otro me aparece un error:Uncaught ReferenceError: django no está definido

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

(La línea indicada es:

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

)

Aquí está mi cabeza plantilla:

<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 }}... 

Mis campos del modelo:

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

Y mi clase de formulario:

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

supongo que algún tipo de representación regla, pero estoy totalmente confundido. Cualquier ayuda es bienvenida!

+1

¿Ha intentado incluir los medios del formulario a través de una clase 'Medios' como se describe en los documentos? https://docs.djangoproject.com/en/dev/topics/forms/media/#s-media-as-a-static-definition –

Respuesta

29

django.jQuery se define en django/contrib/admin/static/admin/js/jquery.init.js y se basa en django/contrib/admin/static/admin/js/jquery.js. Es necesario para cargar los archivos js en su plantilla directamente

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

o incluir esos archivos en your form media

también comprobar la propiedad de mediaModelAdmin.

+0

Tenga en cuenta que en las versiones recientes de Django, jQuery se encuentra en 'vendor/jquery/jquery.js' en lugar de 'jquery.min.js'. –

+0

En realidad, en Django 1.11 el archivo está ubicado en 'vendor/jquery' tanto en la versión completa como en la versión minificada. (Consulte https://github.com/django/django/blob/master/django/contrib/admin/options.py#L582) –

Cuestiones relacionadas