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