首页 > 解决方案 > 获取最近 3 个月未交易的对象

问题描述

我对 Django 很陌生。我在 django 项目中有两个对象:TransactionItem。Item 可以有很多 Transaction 对象。交易有date_timeitem字段。如何编写 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)

提前致谢。

标签: pythondjango

解决方案


假设您的模型是:

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


推荐阅读