嘿,我有一个名为Visit
的模型。使用字段date
,person
,id
。我想让所有最近三个月没有来访的人。你能帮我吗?
到目前为止我所拥有的。结果不是我想要看到的。
visits_anotated = Visit \
.objects \
.only('id', 'date', 'person') \
.values('id', 'date', 'person') \
.annotate(latest_visit=Max('date')) \
.filter(latest_visit__lte=datetime.datetime.now() - datetime.timedelta(weeks=14))
答案 0 :(得分:1)
我不认为您需要对此进行汇总。您应该能够过滤出过去三个月来过的人,然后找到所有其他人。
three_months_ago = datetime.datetime.now() - datetime.timedelta(weeks=14)
recent_people = Visit.objects.filter(
date__gte=three_months_ago
).values('person').distinct()
earlier_people = Visit.objects.exclude(
person__in=recent_people
).values('person').distinct()
如果人是外键,则可以:
Person.objects.exclude(visit_set__date__gte=three_months_ago).distinct()