在 DJANGO 中,如何查询在特定日期后不存在的记录?
In DJANGO, how do I query for records that do not exist after a certain date?
假设我有这样一个模型:
class Invoices(models.Model):
customer = models.ForeignKey(Customer, ...)
date = models.DateField()
amount = models.FloatField()
我想知道在过去 30 天内没有购买的所有客户。
基本上与此查询相反:
no_sales = Invoices.objects.filter(
date__gte=certain_date_30_days_ago
).values(
'customer__code'
)
使用.exclude()
只排除最近30天购买过的客户,不包括最近30天未购买的客户。
有什么想法吗? :) 谢谢!
在 Invoice
模型上使用 .exclude(…)
[Django-doc] 将不起作用:它将不包括任何从未购买过任何东西的 Customer
。但是这些仍然包括在 之前买过东西的人:事实上,如果一个 Customer
在 100 天前买了东西,然后在 20 天前买了东西,那 Customer
仍然会被包括在内,因为第二笔交易的Invoice
被包括在内,但是100天前的那笔仍然会被保留。
您可以在 Customer
模型上使用 .exclude(…)
和:
from datetime import timedelta
from django.utils.timezone import now
Customer.objects.exclude(
<b>invoices__date__gte=now()-timedelta(days=30)</b>
)
这将 return Customer
个 QuerySet
不 与上一个 Invoices
记录相关30 天。
假设我有这样一个模型:
class Invoices(models.Model):
customer = models.ForeignKey(Customer, ...)
date = models.DateField()
amount = models.FloatField()
我想知道在过去 30 天内没有购买的所有客户。
基本上与此查询相反:
no_sales = Invoices.objects.filter(
date__gte=certain_date_30_days_ago
).values(
'customer__code'
)
使用.exclude()
只排除最近30天购买过的客户,不包括最近30天未购买的客户。
有什么想法吗? :) 谢谢!
在 Invoice
模型上使用 .exclude(…)
[Django-doc] 将不起作用:它将不包括任何从未购买过任何东西的 Customer
。但是这些仍然包括在 之前买过东西的人:事实上,如果一个 Customer
在 100 天前买了东西,然后在 20 天前买了东西,那 Customer
仍然会被包括在内,因为第二笔交易的Invoice
被包括在内,但是100天前的那笔仍然会被保留。
您可以在 Customer
模型上使用 .exclude(…)
和:
from datetime import timedelta
from django.utils.timezone import now
Customer.objects.exclude(
<b>invoices__date__gte=now()-timedelta(days=30)</b>
)
这将 return Customer
个 QuerySet
不 与上一个 Invoices
记录相关30 天。