在Django中获取特定外键的记录数,可以使用annotate()
方法和Count
聚合函数。以下是一个示例:
假设有两个模型:Author
和Book
。Book
模型有一个外键author
,指向Author
模型。
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
现在,如果要获取每个作者的书籍数量,可以使用以下查询:
from django.db.models import Count
author_books_count = Author.objects.annotate(books_count=Count('book'))
这将返回一个查询集,其中每个Author
对象都有一个额外的属性books_count
,表示该作者的书籍数量。
例如,要打印每个作者的名字和书籍数量,可以使用以下代码:
for author in author_books_count:
print(f"{author.name}: {author.books_count}")
这将输出类似以下内容:
John Doe: 5
Jane Smith: 3
在这个例子中,我们使用了annotate()
方法和Count
聚合函数来获取特定外键的记录数。这是一个非常有用的Django功能,可以帮助您轻松地获取与特定外键相关的记录数。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云