2009-05-25 9 views
1

Django crée une zone de recherche sur la page d'affichage de liste lorsque le champ "search_fields" est inclus dans un ModelAdmin.Comment étendre administrateur django select?

Certains de mes modèles en ligne se réfèrent aux éléments de la page de liste. Si les termes de la zone de recherche correspondent aux champs de ces modèles en ligne, j'aimerais que les résultats incluent les référents dans la liste.

Exemple: La base de données possède une table de noms et une table d'adresses. Pour chaque nom, il peut y avoir plusieurs adresses. Chaque adresse fait référence à un nom. Lorsque je cherche dans la liste des noms, j'aimerais pouvoir entrer dans "Main Street", rechercher les adresses et afficher les noms référencés par ces adresses.

Je pense que je devrais remplacer la fonction de recherche associée à la boîte de recherche. Si c'est vrai, où se situe cette fonction?

Répondre

3

Je ne suis pas à cent pour cent sûr que je comprends votre question, mais vous pouvez effectuer une recherche sur des domaines connexes dans l'affichage de la liste en définissant search_fields dans la classe admin:

class MyAdmin(admin.ModelAdmin): 
    search_fields = ('name', 'name__address') 

Il utilise la même double underscore syntaxe à travers les relations que vous utiliseriez dans un appel filter() normal.

+0

Merci. Je ne pense pas que cela fonctionnera pour moi parce qu'il n'y a pas de champ d'adresse explicite dans un enregistrement de nom. Au lieu de cela, les enregistrements d'adresse contiennent une référence à "nom" en tant que clé étrangère. – Mitch

+0

Il m'a fallu du temps pour le réaliser, mais tu as raison. Merci encore. – Mitch

Questions connexes