zoukankan      html  css  js  c++  java
  • 067:【Django数据库】ORM查询条件详解-range

    【Django数据库】ORM查询条件详解-range

    range:
    判断某个 field 的值是否在给定的区间中。示例代码如下:

    # views.py文件内容:
    from
    datetime import datetime from django.utils.timezone import make_aware def index(request): start_time = make_aware(datetime(year=2019, month=1, day=7, hour=21, minute=0, second=0 )) end_time = make_aware(datetime(year=2019, month=1, day=7, hour=22, minute=0, second=0 )) articles = Article.objects.filter(create_time__range=(start_time, end_time)) print(articles.query) print(articles) return HttpResponse("success")
    # models.py文件内容:
    class
    Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() category = models.ForeignKey('Category', on_delete=models.CASCADE, null=True) # category = models.ForeignKey('Category', on_delete=models.CASCADE, null=True, related_query_name=articles) create_time = models.DateTimeField(auto_now_add=True, null=True) # 主要是这行

    以上代码的意思是提取所有发布时间在 2019/1/7 21点 到 22点之间的文章。将翻译成以下的 SQL 语句:

    SELECT `article`.`id`, `article`.`title`, `article`.`content`, `article`.`category_id`, `article`.`create_time` FROM `article` WHERE `article`.`create_time` BETWEEN 2019-01-07 13:00:00 AND 2019-01-07 14:00:00

    需要注意的是,以上提取数据,不会包含最后一个值。也就是不会包含 2019/1/7 22点 的文章。而且另外一个重点,因为我们在 settings.py 中指定了 USE_TZ=True ,并且设置了 TIME_ZONE='Asia/Shanghai' ,因此我们在提取数据的时候要使用 django.utils.timezone.make_aware 先将 datetime.datetime 从 navie 时间转换为 aware 时间。 make_aware 会将指定的时间转换为 TIME_ZONE 中指定的时区的时间。

    实例截图如下:

  • 相关阅读:
    剑指offer-第二章排序之年龄排序
    剑指offer—第二章算法之快速排序
    java小程序(课堂作业02)
    关于java的一些小知识(课程作业01)
    Java从命令行接受多个数字并求和
    《大道至简》第一章读后感及伪代码
    大道至简读后感
    GCPC 2013_A Boggle DFS+字典树 CSU 1457
    Aizu 2155 Magic Slayer 背包DP
    UVALive 4255 Guess
  • 原文地址:https://www.cnblogs.com/zheng-weimin/p/10235874.html
Copyright © 2011-2022 走看看