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