内容介绍
通常在adminx后台中的列表中需要统计一下外键关联下级菜单的内容数量达到聚合显示的效果,这里列举一些方法。
models.py
# 内容大类类别模型
class ArticleCategory(models.Model):
category_name = models.CharField(max_length=20, verbose_name='文章类别名称', help_text="文章类别名称")
......
class Meta:
verbose_name = '文章类别管理'
verbose_name_plural = verbose_name
def __str__(self):
return self.category_name
# 内容二级分类类别模型
class ArticleItem(models.Model):
item_category = models.ForeignKey(
ArticleCategory, on_delete=models.CASCADE, related_name='ArticleItemCategory',
verbose_name="文章类别", help_text="文章类别"
)
item_name = models.CharField(max_length=20, verbose_name="栏目名称", help_text="栏目名称")
......
class Meta:
verbose_name = '文章栏目管理'
verbose_name_plural = verbose_name
def __str__(self):
return self.item_name
adminx.py
class ArticleCategoryAdmin(object):
list_display = ['category_name', 'item_count'] # 显示大类和下级栏目数量
......
# 统计每个Category下的Item数
def item_count(self, obj):
return ArticleItem.objects.filter(item_category=obj).count()
# 定义统计列的字段名称
item_count.short_description = "栏目数量"