Вопрос по admin, django, python, jquery – Добавление сценария jQuery в интерфейс администратора Django

23

Я немного упросту ситуацию. Позволять'скажи яУ нас есть модель под названием Lab.

from django.db import models

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

Полеquery почти всегда совпадает с полемacronym, Таким образом, ямне нравитсяquery поле для автоматического заполнения после ввода текста вacronym поле в интерфейсе администратора Django. Эта задача должна выполняться скриптом jQuery.

Итак, если я возьму пример: вы хотите добавить новую лабораторию в базу данных через интерфейс администратора Django. Вы нажимаете кнопку добавления, и вы попадаете на пустую форму с двумя полями. Вы вручную заполняетеacronym поле со значением, таким какABCD а затемquery Поле должно быть анатомически заполнено тем же значением, которое означает.ABCD

Как мне поступить?

Ваш Ответ

1   ответ
46

Чтобы добавить мультимедиа к администратору, вы можете просто добавить его в мета-класс Media вашего админ-класса, например:

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)

Запомните запятую, если у вас есть только один файл, так как он должен быть кортежем. Вы также можете выбрать CSS.

Администратор уже имеет (более старая версия) jquery. Чтобы сократить использование, добавьте это в началоMyScript» файл:

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

Чтобы решить вашу проблему, я бырасширить админ, Вы можете добавить событие js к любому узлу DOM, чтобы инициировать вызов ajax в файле myscript для правильного представления администратора для обработки.

(function($){ // your code })(django.jQuery); rabbit.aaron
Это, возможно, изменилось, так какЭто старый вопрос, но в Django 1.8.1, css указан как словарь, ключом которого является целевой носитель, а значением является набор путей, как указано выше. Используйте запятую для разделения нескольких носителей или 'все' если оно'с неспецифическим. squarelogic.hayden

Похожие вопросы