简体   繁体   English

Django管理控制台-在'list_display'小部件中添加一个custome字段,该字段不是模型类的属性(无需更改models.py)

[英]Django Admin panel- Adding a custome field in 'list_display' widget which is not an attribute of models class(without altering models.py)

I want to add a field named 'count' to 'genre' class that gives the count of movies in that genre. 我想在“流派”类中添加一个名为“ count”的字段,以提供该流派的电影计数。 models.py 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 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)

I want to add count field in list_display 我想在list_display中添加计数字段

Write a method (either in the modelAdmin or the model itself) to get the required value. 编写一个方法(在modelAdmin或模型本身中)以获取所需的值。 Then add it to the list_display like a model's field (without ()) 然后像模型字段一样将其添加到list_display(不带())

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM