型号:
class Person(models.Model):
name = ....
class Registration(models.Model):
person = models.ForeignKey(person)
expires = models.DateField()每年都有一个新的登记记录。
现在我想找出所有登记过期或从未登记的人。有点像
Person.objects.filter(registration__expires__lte=date.today() )当然,在针对person的查询中不能使用“注册”。
是否需要将最新的注册日期存储在person对象中?还是首先对登记表执行查询?那我怎么找那些没有登记的人呢?
发布于 2013-09-10 03:12:12
要查找没有注册的人员,您可以用注册计数对您的person查询进行注释,然后在带注释的字段上筛选:
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
发布于 2013-09-09 02:27:43
我想你想要select_related https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related
person.objects.select_related('registration').filter(registration__expires__lte=date.today() )https://stackoverflow.com/questions/18690650
复制相似问题