2012-05-14 20 views
15

Sto cercando di utilizzare i widget di amministrazione con un paio di DateField sul mio formulario ma solo il primo di essi ottiene il widget visualizzato correttamente, per l'altro viene visualizzato un errore:Uncaught ReferenceError: django non definito

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

(la linea indicata è:

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

)

Ecco la mia testa modello:

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

I miei campi di modello:

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

E la mia classe di form:

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

credo che un qualche tipo di rendere regola, ma io sono totalmente confuso. Qualsiasi aiuto è benvenuto!

+1

Hai provato a includere i media del modulo tramite una classe "Media" come descritto nei documenti? https://docs.djangoproject.com/en/dev/topics/forms/media/#s-media-as-a-static-definition –

risposta

29

django.jQuery è definito in django/contrib/admin/static/admin/js/jquery.init.js e si basa su django/contrib/admin/static/admin/js/jquery.js. È necessario caricare i file js nel modello direttamente

<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 includere i file in your form media

Controllare anche la proprietà di mediaModelAdmin.

+0

Nota che nelle versioni recenti di Django, jQuery si trova in 'vendor/jquery/jquery.js' invece di 'jquery.min.js'. –

+0

In realtà, in Django 1.11 il file si trova in 'vendor/jquery' nella versione completa e minificata. (Vedi https://github.com/django/django/blob/master/django/contrib/admin/options.py#L582) –

Problemi correlati