0

我是 django 新手,正在尝试通过建立论坛来学习

我的模型

class Subject(models.Model):
    name=models.CharField(max_length=128)
    created=models.DateTimeField('Created Date')


    def __str__(self):
        return self.name

class Book(models.Model):
    book_subject=models.ForeignKey(Subject,on_delete=models.CASCADE)
    book_title=models.CharField(max_length=128)
    url=models.URLField()
    votes=models.IntegerField(default=0)


    def __str__(self):
        return self.book_title

我在 django shell 中对数据库的查询

Subject.objects.all()
>>>[<Subject: electronics>, <Subject: compter science>]

q=Subject.objects.get(id=2)
q.book_set.all()
>>>[<Book: python django>, <Book: python flask>]

我应该如何获得每个科目的书籍数量。(计算电子和计算机科学学科的书籍)我知道这可能是直截了当的答案。我想在论坛中显示模板,其中显示主题名称和包含的书籍数量

有人可以帮我查询每个科目的书籍数量吗

非常感谢任何帮助..在此先感谢

4

1 回答 1

3

如果您只需要某个主题的书籍数量,则有count

Subject.objects.get(id=2).book_set.count()

如果您需要计算书籍数量的主题,您可以annotate

from django.db.models import Count
subjects = Subject.objects.annotate(num_books=Count('book'))

for subj in subjects:
    print subj.num_books 
于 2016-02-12T07:54:24.607 回答