Django:如何检索反向外键中的最后一条记录
型号: 每年都会创建一个新的注册记录 现在我想找到所有注册已过期或从未注册的人。差不多Django:如何检索反向外键中的最后一条记录,django,foreign-keys,models,Django,Foreign Keys,Models,型号: 每年都会创建一个新的注册记录 现在我想找到所有注册已过期或从未注册的人。差不多 class Person(models.Model): name = .... class Registration(models.Model): person = models.ForeignKey(person) expires = models.DateField() 当然,在针对person的查询集中不能使用“registration” 我是否需要在person对象中存储最新的
class Person(models.Model):
name = ....
class Registration(models.Model):
person = models.ForeignKey(person)
expires = models.DateField()
当然,在针对person的查询集中不能使用“registration”
我是否需要在person对象中存储最新的注册日期?还是先对注册表进行查询?那我怎么找到没有注册的人呢 我想你想选择与你相关的
要查找未注册的人员,您可以使用注册计数对人员查询进行注释,然后在注释字段中进行筛选:
person.objects.select_related('registration').filter(registration__expires__lte=date.today() )
请参见注释上的Django文档:
对于有两个注册的用户来说,这并不能解决我的问题,一个已过期,另一个尚未过期。我需要找到所有用户谁没有注册(下面的答案有工程)或只有注册已过期。
person.objects.select_related('registration').filter(registration__expires__lte=date.today() )
from django.db.models import Count
Person.objects.annotate(reg_count=Count('registration')).filter(reg_count=0)