2017-08-11 1 views
0

Je souhaite ajouter un champ nommé 'count' à la classe 'genre' qui donne le nombre de films dans ce genre. models.pyPanneau d'administration Django - Ajout d'un champ custome dans le widget 'list_display' qui n'est pas un attribut de la classe models (sans modifier models.py)

class genre(models.Model): 
     genre_name = models.CharField(max_length=20, verbose_name='Genre') 

    def __str__ (self): 
     return(self.genre_name) 

    class movie(models.Model): 

     movie_name = models.CharField(max_length=50, verbose_name='Movie Name') 
     movie_rating = models.IntegerField(default=1) 
     movie_genres = models.ManyToManyField(genre, verbose_name='Genre(s)') 
     added_by = models.CharField(max_length=20, blank=True) 
     email = models.EmailField(blank=True) 
     Date = models.DateTimeField(default=datetime.now) 

    def __str__ (self): 
     return(self.movie_name) 

admin.py

from __future__ import unicode_literals 
    from django.contrib import admin 
    from . models import movie, genre 
    from django import forms 

    class movieAdmin(admin.ModelAdmin): 

     list_display=('movie_name', 'movie_rating','Date') 
     search_fields=('movie_name',) 
     filter_horizontal=('movie_genres',) 
     list_filter=('Date',) 
     date_hierarchy='Date' 
     ordering=('-movie_name',) 
     fields=('movie_name','movie_rating') 

    admin.site.register(movie, movieAdmin) 
    admin.site.register(genre) 

Je veux ajouter nombre champ dans list_display

Répondre

0

Ecrivez une méthode (que ce soit dans le modelAdmin ou le modèle lui-même) pour obtenir la valeur requise. Puis ajoutez-le à l'affichage list_display comme le champ d'un modèle (sans())

list_display = ('somefield', .. , 'myCountMethod',) 

    # in modelAdmin or model 
    def myCountMethod(self, ...): 
     # do some counts here 
     return display_value