Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:如何检索反向外键中的最后一条记录_Django_Foreign Keys_Models - Fatal编程技术网

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)