2013-04-15 12 views
15

Uproszczę nieco sytuację. Powiedzmy, że mam model o nazwie Lab.Dodawanie skryptu jQuery do interfejsu administratora Django

from django.db import models 

class Lab(models.Model): 
    acronym = models.CharField(max_length=20) 
    query = models.TextField() 

Pole query jest prawie zawsze taka sama, jak na polu acronym. Dlatego chciałbym, aby pole query zostało automatycznie wypełnione po wprowadzeniu tekstu w polu acronym w interfejsie administratora Django. To zadanie musi zostać wykonane za pomocą skryptu jQuery.

Więc jeśli wezmę przykład: chcesz dodać nowe laboratorium do bazy danych poprzez interfejs administracyjny Django. Kliknięcie przycisku dodawania powoduje przejście do pustego formularza z dwoma polami. Ręczne wypełnienie pola acronym za pomocą wartości, takiej jak ABCD, a następnie pole query powinno zostać zakończone antologicznie z tą samą wartością, co oznacza ABCD.

Jak powinienem kontynuować?

Odpowiedz

35

Aby dodać media do administratora można po prostu dodać go do klasy meta Mediów swojej klasie administratora, np:

admin.py

class FooAdmin(admin.ModelAdmin): 
    # regular stuff 
    class Media: 
     js = (
      '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', # jquery 
      'js/myscript.js',  # project static folder 
      'app/js/myscript.js', # app static folder 
     ) 

admin.site.register(Foo, FooAdmin) 

umysł przecinek spływu jeśli tylko zawierają jeden plik, ponieważ musi to być krotka. Możesz także włączyć css w ten sposób.

Administrator ma już (starszą wersję) jquery. Aby skrót go do użytku dodać to do góry '' MyScript pliku:

if (!$) { 
    $ = django.jQuery; 
} 

aby rozwiązać swój problem, chciałbym extend the admin. Możesz dodać zdarzenie js do dowolnego węzła DOM, aby wywołać wywołanie ajax w pliku myscript do poprawnego widoku administracyjnego do obsługi.

+2

To mogło się zmienić, ponieważ jest to stare pytanie, ale od Django 1.8.1, css jest określony jako słownik z kluczem będącym nośnikiem docelowym i wartością będącą krotką ścieżek jak powyżej. Użyj separacji przecinkami, by kierować reklamy na wiele mediów lub "wszystkie", jeśli są niespecyficzne. –

Powiązane problemy