繁体   English   中英

如何在django中对第二个外键进行计数?

[英]how to perform count for a secod foreign key in django?

我有三个模型类别,职位,评论

class Category(models.Model):
    class Meta:
        verbose_name_plural = "Categories"

    COLOR_CHOICES = (
        ('primary', 'Blue'),
        ('success', 'Green'),
        ('info', 'Sky Blue'),
        ('warning', 'Yellow'),
        ('danger', 'Red')
    )

    title = models.CharField(max_length=250, unique=True)
    description = models.CharField(max_length=250)
    slug = models.SlugField(max_length=200,)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    visited = models.IntegerField(default=0)
    color = models.CharField(
            max_length=20, default='primary', choices=COLOR_CHOICES)

class Post(models.Model):
    STATUS_CHOICES = (
        (True, 'Visible'),
        (False, 'Hidden')
    )
    title = models.CharField(max_length=250)
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    body = models.TextField()
    category = models.ForeignKey(
            Category, on_delete=models.SET_NULL, null=True)
    slug = models.SlugField(max_length=200,)
    status = models.BooleanField(default=False, choices=STATUS_CHOICES)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    visited = models.IntegerField(default=0)

class Comment(models.Model):
    STATUS_CHOICES = (
        (True, 'Visible'),
        (False, 'Hidden')
    )
    post = models.ForeignKey(Post, on_delete=models.CASCADE, null=True)
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    body = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.BooleanField(default=True, choices=STATUS_CHOICES)

我想执行一个查询集以获取类别和每个类别的评论数,但我找不到一个好的方法。 我已经知道如何使用注释来计数每个类别的帖子。 我试过了 :

categories = Category.objects.annotate(nb_comments=Count('post__comment'))

如果您要计算与特定类别相关的评论数:

number_of_commemt_for_cat1=Comment.objects.filter(post__category_id=1).count()

该查询说:属于该帖子的评论计数属于特定类别。

在这里您可以找到与特定类别相关的帖子数:

number_of_post_for_cat1=Post.objects.filter(category_id=1).count()

我在使用移动设备,因此无法为您解释清楚或在此处提供参考。 希望对您有所帮助。

暂无
暂无

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

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