博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django 查询表的几种方式
阅读量:6231 次
发布时间:2019-06-21

本文共 2075 字,大约阅读时间需要 6 分钟。

在Danjao中对单表进行查询是最基本的操作,其余的增加,删除,修改都是在查询的基础上实现的。

最基本的查询一般是通过filter过滤或者 all获取所有的值

例1:最基本用法

id等于一,而且名字等于root的条件

models.User.objects.filter(id=1,name='root')

id大于一,而且名字是root的条件

models.User.objects.filter(id__gt=1,name='root')

id小于1的条件

models.User.objects.filter(id__lt=1)

filter内部的条件用字典的格式实现

dic={'name':'xx','age':10}models.User.objects.filter(**dic)

在上面的例子中,获取的结果都是QuerySet类型,这个类型类似列表,里面每个元素都是一个完整的对象,拥有自己的属性,也就是表里每一行对应的字段。因此,如果需要获取列表里面的第一个元素,我们一般使用first(),比如v=models.Business.objects.filter(id=1).first(),  如果没有这个值,那么他返回的就是None;我们使用get()方法也可以获取表值,比如 models.Business.objects.get(id=1), 但是如果这个值不存在,那就直接报错了。因此比较推荐的方法是使用filter。

第二种查询方式是通过values来实现。通过这种方式获取的QuerySet,里面的每一个元素都是一个字典

例2:

models.Business.objects.all().values('id','caption')

第三种方式是通过value_list来实现,这种方式获取的QuerySet,里面的每一个元素都是一个元祖

例3:

models.Business.objects.all().values_list('id','caption')

下面看看具体

views.py

def business(request):    v1 = models.Business.objects.all()    v2 = models.Business.objects.all().values('id','caption')    v3 = models.Business.objects.all().values_list('id','caption')    print(v1)    print(v2)    print(v3)    return render(request, 'business.html', {'v1': v1,'v2': v2, 'v3': v3})

控制台输出结果可以看见列表里面的元素分别是对象,字典和元祖。

]>

host.html

注意的是Python里面对象是通过点.来获取属性,字典通过dic['key']获取对应,元祖通过索引获取对应值

模板语言都是通过点来获取,即使字典的key和索引也是一样!

第二个注意的是有些值,比如id 我不希望客户端直接看见,但是又希望调用,那么可以作为某个标签的一个属性存在。

    
    
    

业务线列表(对象)

    
            {% for row in v1 %}            
  • {
    { row.id }} - {
    { row.caption }} - {
    { row.code }}
  •         {% endfor %}    
    

业务线列表(字典)

    
            {% for row in v2 %}            
  • {
    { row.id }} - {
    { row.caption }}
  •         {% endfor %}    
    

业务线列表(元组)

    
            {% for row in v3 %}            
  • {
    { row.0 }} - {
    { row.1 }}
  •         {% endfor %}    

结果如下

最后值得一提的是外键的查询

例如 b指向了另外一个表

v=models.Host.objects.filter(nid__gt=0)v[0].b.caption

转载地址:http://rztna.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
AOP 的利器:ASM 3.0 介绍
查看>>
Redis数据结构详解,五种数据结构分分钟掌握
查看>>
解决Linux下编译.sh文件报错 “[: XXXX: unexpected operator”
查看>>
使用JConsole监控
查看>>
开发规范
查看>>
RAID技术
查看>>
excel 使用 navicat 导入数据库
查看>>
我的友情链接
查看>>
我的大学——我在科创协会的部长感悟
查看>>
数据结构之队列——顺序存储结构(php代码实现——方法一)
查看>>
Hive安装使用
查看>>
JDK 11的新特性
查看>>
MySQL优化20条经验(一)
查看>>
Linux修改时区
查看>>
ubuntu之R攻略
查看>>
《跟阿铭学Linux》第11章 正则表达式:课后习题与答案
查看>>
[软考]挣值管理EVM详细解释及应用,实例讲解收集(信息系统项目管理师-成本管理)...
查看>>
业内人士详述SIEM建设的演进过程
查看>>
数据中心的重要服务器如何保护?
查看>>