我有2个表,Payment
和date_updated
,其关系为One-To-Many。
在付款时,我有字段status
和date_updated < 3 months ago
。
我是否可以在一个查询中进行查询,以获得所有使用User.objects.filter(
Q(orders__payments__date_updated__lte=time_x_months) &
Q(Q(orders__payments__date_updated__gte=time_x_months) &
~Q(orders__payments__status=Payment.STATUS_COMPLETED))
)
付款的用户,以及是否有超过3个月之前的其他付款,而不是状态应该不同于已完成。如果在用户上找到这样的付款,则不应该退还用户。
例如,我让用户在去年只付了一次付款,我想要退回,但是如果同一个用户最近再次付款而不是3个月前,并且状态已完成,则不应退回用户
我正在尝试:
<li [class.active]="homeLink.classList.contains('active')">
<a #homeLink routerLink="/home" routerLinkActive="active">Home</a>
</li>
答案 0 :(得分:1)
它可能会像Payment
这样存档查询:
from django.db.models import Count, Q
users = Payment.objects.filter(
Q(date_updated__lte=time_until) &
Q(date_updated__gte=time_from) &
~Q(status=Payment.STATUS_COMPLETED)
).values('user').annotate(count=Count('pk'))
或者只是:
from django.db.models import Count
users = Payment.objects.filter(
date_updated__lte=time_until,
date_updated__gte=time_from
).exclude(
status=Payment.STATUS_COMPLETED)
).values('user').annotate(count=Count('pk'))
(缩进可能错误)