zoukankan      html  css  js  c++  java
  • Django objects.all()、objects.get()与objects.filter()之间的区别介绍

    objects.all()返回的是个QuerySet对象,程序并没有真的在数据库中执行SQL语句查询数据,但支持迭代,使用for循环可以获取数据。

    In [1]: from index.models import *
    
    In [2]: v = Vocation.objects.all()
    
    In [3]: v
    Out[3]: <QuerySet [<Vocation: 2>, <Vocation: 3>, <Vocation: 5>, <Vocation: 7>, <Vocation: 8>, <Vocation: 11>, <Vocation: 12>]>
    
    In [4]: for i i v:
       ...:     print(i.job)
      File "<ipython-input-4-5b967446af21>", line 1
        for i i v:
              ^
    SyntaxError: invalid syntax
    
    
    In [5]: for i in v:
       ...:     print(i.job)
       ...: 
    文员
    网站设计
    项目经理
    jj
    zz
    aa1
    aa2
    

    get返回的是Model对象,类型为列表,说明使用get方法会直接执行sql语句获取数据

    In [6]: v = Vocation.objects.get(id=2)
    
    In [7]: v
    Out[7]: <Vocation: 2>
    
    In [8]: v.job
    Out[8]: '文员'
    

    filter和get类似,但支持更强大的查询功能,同时返回的也是个查询集,查询集不能直接使用属性。

    In [9]: v = Vocation.objects.filter(id=2)
    
    In [10]: v
    Out[10]: <QuerySet [<Vocation: 2>]>
    In [13]: v.job
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-13-b87bc0c3b499> in <module>
    ----> 1 v.job
    
    AttributeError: 'QuerySet' object has no attribute 'job'
    
    In [14]: v[0].id
    Out[14]: 2
    

    使用get方法查询返回的是单个字段<Vocation: 2>,查询字段必须是主键或者唯一约束的字段,并且查询的数据必须存在,若重复或不存在则报错
    使用filter方式查询,返回的是个列表<QuerySet [<Vocation: 2>]>
    相关链接:
    https://www.cnblogs.com/wkhzwmr/p/15589934.html

    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    java+opencv实现图像灰度化
    java实现高斯平滑
    hdu 3415 单调队列
    POJ 3368 Frequent values 线段树区间合并
    UVA 11795 Mega Man's Mission 状态DP
    UVA 11552 Fewest Flops DP
    UVA 10534 Wavio Sequence DP LIS
    UVA 1424 uvalive 4256 Salesmen 简单DP
    UVA 1099 uvalive 4794 Sharing Chocolate 状态DP
    UVA 1169uvalive 3983 Robotruck 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15616334.html
Copyright © 2011-2022 走看看