django 按时间范围查询数据库实例代码


Posted in Python onFebruary 11, 2018

从前台中获得时间范围,在django后台处理request中数据,完成format,按照范围调用函数查询数据库。

介绍一个简单的功能,就是从web表单里获取用户指定的时间范围,然后在数据库中查询此时间范围内的数据。

数据库里的model举例是这样:

class book(models.Model):  
  name = models.CharField(max_length=50, unique=True) 
  date = models.DateTimeField() 
    
  def __unicode__(self): return self.name

假设我们从表单获得的request.GET里面的时间范围最初是这样的:

request.GET = {'year_from': 2010, 'month_from': 1, 'day_from': 1, 
        'year_to':2013, 'month_to': 10, 'day_to': 1}

由于model里保存的date类型是models.DateTimefield() ,我们需要先把request里面的数据处理成datetime类型(这是django里响应代码的前半部分):

import datetime 
 
def filter(request): 
  if 'year_from' and 'month_from' and 'day_from' and\ 
      'year_to' and 'month_to' and 'day_to' in request.GET: 
    y = request.GET['year_from'] 
    m = request.GET['month_from'] 
    d = request.GET['day_from'] 
    date_from = datetime.datetime(int(y), int(m), int(d), 0, 0) 
    y = request.GET['year_to'] 
    m = request.GET['month_to'] 
    d = request.GET['day_to'] 
    date_to = datetime.datetime(int(y), int(m), int(d), 0, 0) 
  else: 
    print "error time range!"

接下来就可以用获得的 date_from date_to作为端点筛选数据库了,需要用到__range函数,将上面代码加上数据库查询动作:

import datetime 
 
def filter(request): 
  if 'year_from' and 'month_from' and 'day_from' and\ 
      'year_to' and 'month_to' and 'day_to' in request.GET: 
    y = request.GET['year_from'] 
    m = request.GET['month_from'] 
    d = request.GET['day_from'] 
    date_from = datetime.datetime(int(y), int(m), int(d), 0, 0) 
    y = request.GET['year_to'] 
    m = request.GET['month_to'] 
    d = request.GET['day_to'] 
    date_to = datetime.datetime(int(y), int(m), int(d), 0, 0) 
    book_list = book.objects.filter(date__range=(date_from, date_to)) 
    print book_list 
  else: 
    print "error time range!"

总结

以上就是本文关于django 按时间范围查询数据库实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python的Django框架中消息通知的计数器实现教程
Jun 13 Python
Python代码实现KNN算法
Dec 20 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
python实现抽奖小程序
Apr 15 Python
基于python实现从尾到头打印链表
Nov 02 Python
python 求10个数的平均数实例
Dec 16 Python
如何基于python实现归一化处理
Jan 20 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
Apr 01 Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 Python
一行Python命令实现批量加水印
Apr 07 Python
python实现媒体播放器功能
Feb 11 #Python
python使用pycharm环境调用opencv库
Feb 11 #Python
Python元组及文件核心对象类型详解
Feb 11 #Python
详解Python核心对象类型字符串
Feb 11 #Python
python使用json序列化datetime类型实例解析
Feb 11 #Python
Python中pow()和math.pow()函数用法示例
Feb 11 #Python
Python反射的用法实例分析
Feb 11 #Python
You might like
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
javascript实现数独解法
2015/03/14 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
小程序实现搜索框
2020/06/19 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
python实现用户登录系统
2016/05/21 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
毕业生造价工程师求职信
2013/10/17 职场文书
校园达人秀策划书
2014/01/12 职场文书
党员自我批评与反省材料
2014/02/10 职场文书
陈欧的广告词
2014/03/18 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
文艺委员竞选稿
2015/11/19 职场文书
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python