使用Django对数据库中的对象进行计数和过滤

2 投票
1 回答
915 浏览
提问于 2025-04-15 13:19

我在弄清楚如何跟踪对象的关系和计数字段时遇到了一些困难。

在我的Django网站中,我有一个用户资料模型:

user = models.ForeignKey(User, unique=True)
name = models.CharField(_('name'), null=True, blank=True)
about = models.TextField(_('about'), null=True, blank=True)
location = models.CharField(_('location'), null=True, blank=True)
website = models.URLField(_('website'), null=True, blank=True)

我理解这是在用用户名作为外键。

我想统计并显示我的用户填写的完整资料数量,以及填写了特定“元素/字段”(比如名字)的资料数量。我试过:

Profile.objects.all().count()

结果显示的资料数量和用户数量一样,我猜这是因为每个用户都有一个资料模型,即使是空的。

我不太确定如何统计那些填写了某些字段的资料,也不太确定如何统计填写了“名字”字段的数量。

我试过:

Profile.objects.all().name.count()

Django有一些不错的文档,关于查询集API,但目前对我来说有点难以理解。

  • 请原谅我使用了不正确的术语。

1 个回答

1

你应该可以通过以下方式获取它们:

Profile.objects.filter(name__isnull=False)

撰写回答