【问题标题】:Django filter model with timestamp带有时间戳的 Django 过滤器模型
【发布时间】: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 的时间戳

我想获取在这两个值之间有时间戳的数据。

【问题讨论】:

    标签: django filter model timestamp


    【解决方案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找到类似的例子

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-16
        • 2023-04-09
        • 1970-01-01
        • 2022-11-16
        • 2016-05-18
        • 2012-03-13
        • 2016-07-26
        相关资源
        最近更新 更多