使用Django对数据库中的对象进行计数和过滤
我在弄清楚如何跟踪对象的关系和计数字段时遇到了一些困难。
在我的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)