首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:如何在反向外键中检索最后一条记录

Django:如何在反向外键中检索最后一条记录
EN

Stack Overflow用户
提问于 2013-09-09 02:13:36
回答 2查看 1.5K关注 0票数 2

型号:

代码语言:javascript
复制
class Person(models.Model):
   name = ....

class Registration(models.Model):
   person  = models.ForeignKey(person)
   expires = models.DateField()

每年都有一个新的登记记录。

现在我想找出所有登记过期或从未登记的人。有点像

代码语言:javascript
复制
Person.objects.filter(registration__expires__lte=date.today() )

当然,在针对person的查询中不能使用“注册”。

是否需要将最新的注册日期存储在person对象中?还是首先对登记表执行查询?那我怎么找那些没有登记的人呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-10 03:12:12

要查找没有注册的人员,您可以用注册计数对您的person查询进行注释,然后在带注释的字段上筛选:

代码语言:javascript
复制
from django.db.models import Count
Person.objects.annotate(reg_count=Count('registration')).filter(reg_count=0)

请参阅注释上的Django文档:

https://docs.djangoproject.com/en/dev/ref/models/querysets/#annotate

票数 0
EN

Stack Overflow用户

发布于 2013-09-09 02:27:43

我想你想要select_related https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related

代码语言:javascript
复制
person.objects.select_related('registration').filter(registration__expires__lte=date.today() )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18690650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档