【Django3.0功能开发】apps篇:adminx中统计外键关联内容数量的通用方法

内容介绍

通常在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 = "栏目数量"

效果演示

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_20288327/article/details/112798577