[英]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.