Affiché champ model lié admin Django

27 Oct

Un rapide article pour expliquer comment faire pour afficher dans l'admin de Django dans list_display exactement un champ de modèle lié voici un exemple je voudrais afficher la liste des noms du model A dans le modèle B

J'ai 2 modèles CustomA et CustomB dans un fichier models.py:

class ModelA(models.Model):

    name = models.CharField(max_length = 50)

class ModelB(models.Model):
     name = models.CharField(max_length = 50)
     description = models:TextField()
     custom_a = models.ForeignKey(ModelA)

Fichier admin.py:

class ModelAAdmin(admin.ModelAdmin):

    def display_modela_name(self, obj):
        return ','.join([a.name for a in obj.modela_set_all()])

    list_display = (name,)

class ModelBAdmin(admin.ModelAdmin):
    list_display =(name,description,display_modela_name)

 admin.site.register(ModelA, ModelAAdmin)
 admin.site.register(ModelB, ModelBAdmin)

Ce qui nous intéresse ici c'est la methode display_modela_name que nous venons de créer permettant via la méthode de l'objet set_all() de lister tous les objets liés et de les itérer avec un compréhension de liste, cela aura pour effet d'afficher tous les objets d'un modèle lié, dans le listing

J'espère que ça pourra servir si vous avez besoin de faire ce type de fonctionnalité

Publié le: Jeudi 27 octobre 2016
blog comments powered by Disqus
Monter

© Circonflex-studio - Tous droits réservés - Mentions legales
Développeur web indépendant / Webdesigner / Intégrateur
Nice - Cannes - Monaco - Antibes - côte d'azur | site valide HTML 5

Ce site à été développé en Python avec le framework Django

"http://www.cssawards.net/nominee/circonflex-studio/"