Django开发之路 二(django的models表查询)

django的models表查询

  一、单表查询

(1) all():                 查询所有结果    # 返回的QuerySet类型

(2) filter(**kwargs):      它包含了与所给筛选条件相匹配的对象   #返回的QuerySet类型

(3) get(**kwargs):         返回与所给筛选条件相匹配的对象,返回结果有且只有一个,  #返回的models对象
                             如果符合筛选条件的对象超过一个或者没有都会抛出错误。

(4) exclude(**kwargs):     它包含了与所给筛选条件不匹配的对象  #返回的QuerySet类型 

(5) values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列  #返回的QuerySet类型
                           model的实例化对象,而是一个可迭代的字典序列

(6) values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列  #返回的QuerySet类型 

(7) order_by(*field):      对查询结果排序  

(8) reverse():             对查询结果反向排序

(9) distinct():            从返回结果中剔除重复纪录

(10) count():              返回数据库中匹配查询(QuerySet)的对象数量。

(11) first():              返回第一条记录  #返回的models对象
(12) last(): 返回最后一条记录  #返回的models对象
(13) exists(): 如果QuerySet包含数据,就返回True,否则返回False

  二、双下划线查询

(1)models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值

(2)models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据
(3)models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in
   
(4)models.Tb1.objects.filter(name__contains="ven") #字段包含指定值的
(5)models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感  

(6)models.Tb1.objects.filter(id__range=[1, 2])     # 范围bettwen and  

(7)还有startswith,istartswith, endswith, iendswith之类

  三、跨表查询

  1、表结构

class Something(models.Model):
    name = models.CharField(max_length=32)

class UserType(models.Model):
    caption = models.CharField(max_length=32)
    s = models.ForeignKey(‘Something‘,on_delete=models.CASCADE)

class UserInfo(models.Model):   user = models.CharField(max_length=32)   pwd = models.CharField(max_length=32)   user_type = models.ForeignKey(‘UserType‘) # user_type_id

  2、查询

userinfo_obj = UserInfo.objects.all()

  查询到的是里面包含多个UserInfo对象,取第一个UserInfo对象则

userinfo_obj[0]

  取第一个对象的值则为

id = userinfo_obj[0].user.id
user = userinfo_obj[0].user.user
pwd = userinfo_obj[0].user.pwd

  3、一对多操作

  创建数据一步到位

UserInfo.objects.create(user=‘abj‘,‘pwd‘=‘111‘,user_type_id=3)

  4、反向查询

  反向查询其他表的数据双下划线__很重要!如查询‘普通用户’用user_type__caption即可

q = UserInfo.objcets.filter(user_type__caption=‘普通用户‘)

原文地址:https://www.cnblogs.com/hsj-jingyu/p/9257814.html

时间: 2024-08-01 14:20:42

Django开发之路 二(django的models表查询)的相关文章

Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序

NDK开发Android端RTMP直播推流程序 经过一番折腾,成功把RTMP直播推流代码,通过NDK交叉编译的方式,移植到了Android下,从而实现了Android端采集摄像头和麦克缝数据,然后进行h264视频编码和aac音频编码,并发送到RTMP服务器,从而实现Android摄像头直播.程序名为NdkRtmpEncoder,在这里把整个过程,和大体框架介绍一下,算是给需要的人引路. 开发思路 首先,为什么要用NDK来做,因为自己之前就已经实现过RTMP推流.RTMP播放.RTSP转码等等各种

Django开发:(1)django基础 & url控制器

HTTP请求协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议.http协议是基于TCP/IP协议之上的应用层协议 请求协议: 请求方式: get与post请求 1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456. POST方法是把提交的数据放在HTT

数据库表的查询操作(实验二),数据库表查询实验

[实验目的]:了解SQL语言的使用,进一步理解关系运算,巩固数据库的基础知识.[实验要求]:掌握利用Select语句进行各种查询操作:单表查询.多表连接及查询.嵌套查询.集合查询等.[实验内容]一.单表查询1.简单查询打开查询分析器,根建立teacher表,并加入数据.从teacher表中分别检索出教师的所有信息,以及仅查询教工号.姓名和职称.语句如下: select * from teacher select tno, tname from teacher 如要查询时改变列标题的显示,则从te

django开发1_windows下搭建django环境

前期准备 1.django1.8 2.pillow 3.pymysql 4.python 2.7 1.虚拟环境 首先在真实机安装虚拟环境 virtualenv   路径 2.安装好后以后所有的下载包操作均在虚拟环境下进行,该虚拟环境作为django专用 切换到虚拟环境  cd  /虚拟环境路径/Scripts 执行activate 看到以下说明虚拟环境开启成功 3.安装以上的包 A.django==1.8 B.pillow C.pymysql 4.安装成功后打开pycharm进行django的开

Flask web开发之路二

今天创建第一个flask项目,主app文件代码如下: # 从flask这个框架导入Flask这个类 from flask import Flask #初始化一个Flask对象 # Flasks() # 需要传递一个参数__name__ # 1. 方便flask框架去寻找资源 # 2. 方便flask插件比如Flask-Sqlalchemy出现错误的时候,好去寻找问题所在的位置 app = Flask(__name__) # @app.route是一个装饰器 # @开头,并且在函数的的上面,说明是

Django 开发(二) 《models》

python 2.7.6 Django1.8.3 IDE eclipse+pydev Django开发的模式就是MTV(c)模式(model, template, view(urls)). 对于model我的理解是对于每一个在app.models中的class对应的就是每个数据库的表格,而models主要的也就是定义一个TABLE,与数据库进行交互,对数据进行增删改查等等,这是对于一个网站存储数据的核心. 对于创建好的models首先要生成一个数据库,假如要使用的数据库是sqlite,那么就不需

ZabbixAPI+django+nginx简单的二次开发实例(五)

接上一篇博文 ZabbixAPI+django+nginx简单的二次开发实例(四) 步骤五,图形展示 写一个RRDtool图形展示的脚本,由于要和view.py联动,我放在了appname的文件夹下 cd /API/web/pos/moniter vim rrddraw.py #!/usr/bin/env python #coding=utf-8 import rrdtool #ping的图形 def itemping(data): pngname = str(data['pname']) #图

ZabbixAPI+django+nginx简单的二次开发实例(三)

接上一篇博文 ZabbixAPI+django+nginx简单的二次开发实例(二) 步骤三,站点架构部分 本部分用到的软件 1,Nginx:接受访问请求,应答静态页面,转发动态请求至uwsgi 2,uwsgi:应答动态请求 3,Django:处理后台数据 4,supervisor:管理进程 首先安装Nginx yum install epel-release yum install python-devel nginx 修改配置文件 vim /etc/ngnix/ngnix.conf user

django开发实战笔记-1-2017-03-19

Django 开发环境的搭建和创建 website工程 要开始 Django 开发,你需要从中掌握以下知识: 如何创建 Django 工程,并了解 Django 默认的工程目录结构 如何创建 Django APP 理解 Django 的MTV 模式,学会编写 Model.View.Template Django 如何处理静态文件,即各种 CSS,JS,以及图片文件等 一:环境配置 1.Centos [[email protected] myweb]# uname -a Linux localho