带有时间戳的 Django 过滤器模型
Posted
技术标签:
【中文标题】带有时间戳的 Django 过滤器模型【英文标题】:Django filter model with timestamp 【发布时间】:2018-09-29 00:23:57 【问题描述】:我有以下型号:
class User(models.Model):
id = models.CharField(max_length=10, primary_key=True)
class Data(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
timestamp = models.IntegerField(default=0)
给定一个用户,我想知道如何使用时间戳进行过滤。例如:
从用户 1 获取从现在到 1 小时前的数据。
我有 now = time.time()
的当前时间戳,我也有 1 小时前使用 hour_ago = now-3600
的时间戳
我想获取在这两个值之间有时间戳的数据。
【问题讨论】:
【参考方案1】:使用range获取两个值之间的数据。
您可以在任何可以在 SQL 中使用 BETWEEN 的地方使用 range — 用于日期、数字甚至字符。
例如
Data.objects.filter(timestamp__range=(start, end))
来自文档:
import datetime
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))
【讨论】:
【参考方案2】:您可以使用__gte
,即greater than or equal to
,__lte
指的是less than or equal to
所以试试这个,
Data.objects.filter(timestamp__gte=hour_ago,timestamp__lte=now)
你可以在official doc找到类似的例子
【讨论】:
以上是关于带有时间戳的 Django 过滤器模型的主要内容,如果未能解决你的问题,请参考以下文章