python - 获取最近 3 个月未交易的对象
问题描述
我对 Django 很陌生。我在 django 项目中有两个对象:Transaction和Item。Item 可以有很多 Transaction 对象。交易有date_time和item字段。如何编写 django 查询来获取过去 20 天内没有任何交易的项目?
class Item(models.Model):
name = models.CharField(max_length=80)
class Transaction(models.Model):
date_time = models.DateTimeField(default=timezone.now)
item = models.ForeignKey(Item)
提前致谢。
解决方案
假设您的模型是:
class Item(models.Model):
name = models.CharField(max_length=100)
class Transaction(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
created_at = models.DateTimeField()
您可以执行如下查询:
from datetime import datetime, timedelta
Item.objects.distinct().exclude(transaction__created_at__gte=datetime.now() - timedelta(days=20))
此查询将查找过去 20 天内有交易的商品,然后显示其余商品(过去 20 天内没有任何交易)。
在 Django Shell 上试试这个。打开外壳:python manage.py shell