web-dev-qa-db-fra.com

Ajout d'un script jQuery à l'interface d'administration Django

Je vais simplifier légèrement la situation. Disons que j'ai un modèle appelé Lab.

from Django.db import models

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

Le champ query est presque toujours le même que le champ acronym. Ainsi, j'aimerais que le champ query soit automatiquement rempli après avoir saisi du texte dans le champ acronym de l'interface d'administration Django. Cette tâche doit être effectuée par un script jQuery.

Donc, si je prends un exemple: vous voulez ajouter un nouveau laboratoire à la base de données via l'interface d'administration Django. Vous cliquez sur le bouton Ajouter et vous atterrissez sur le formulaire vide avec les deux champs. Vous remplissez manuellement le champ acronym avec une valeur telle que ABCD, puis le champ query doit être complété automatiquement avec la même valeur, c'est-à-dire ABCD.

Comment dois-je procéder?

28
user2282405

Pour ajouter des médias à l'administrateur, vous pouvez simplement les ajouter à la méta-classe Médias de votre classe d'administration, par exemple:

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)

Attention à la virgule de fin si vous n'avez qu'un seul fichier inclus, car il doit s'agir d'un tuple. Vous pouvez également opter pour css de cette façon.

L'administrateur a déjà (une ancienne version) de jquery inclus. Pour le raccourcir à des fins d'utilisation, ajoutez ceci en haut du fichier 'myscript':

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

Pour résoudre votre problème, je voudrais étendre l'administrateur . Vous pouvez ajouter un événement js à n'importe quel nœud DOM pour déclencher un appel ajax dans votre fichier myscript vers la vue d'administration correcte pour la gestion.

53