【发布时间】:2019-02-24 12:59:36
【问题描述】:
我正在使用 Django 创建一个博客应用程序,而且我对 django 也很陌生。
这是我创建的模型
class categories(models.Model):
Title = models.CharField(max_length=40, default='GST')
class Blog(models.Model):
User = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
Date = models.DateTimeField(default=datetime.now)
Blog_title = models.CharField(max_length=255)
likes = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='likes',blank=True)
Description = RichTextUploadingField(blank=True, null=True,config_name='special')
Blog_image = models.ImageField(upload_to='blog_image', null=True, blank=True)
Category = models.ForeignKey(categories,on_delete=models.CASCADE,related_name='blogs')
我想知道如何计算特定类别下的博客总数?
我想跟踪所有类别的特定计数率...
在我的模型中做这样的事情
def categories_count(self):
for a in categories.objects.all():
categories_count = Blog.objects.filter(Category__Title=a.Title).count()
return categories_count
但它只返回一个值...谁能建议我用一些合适的代码来解决这个问题...
谢谢
【问题讨论】:
-
您可以构造一个列表,为
Category对象添加一个属性,但最好是简单地注释您的查询集。此外,在此处使用title是有风险的:如果两个类别具有相同的标题,则类别将“相加”,此外,计数将执行JOIN,这会降低查询效率。 -
上一篇文章中已经回答了您的问题:stackoverflow.com/a/52419681/10090254
-
你能给我提供符合这个查询的合适代码吗???@Willem Van Onsem
标签: django django-models