zoukankan      html  css  js  c++  java
  • Python中QuerySet和Objects类

    X.Objects.all():X模型的数据表中的所有条记录以X类型的对象实例的形式被取出来


    一、

    1.queryset是查询集,就是传到服务器上的url里面的查询内容。Django会对查询返回的结果集QuerySet进行缓存,这是为了提高查询效率。也就是说,在你创建一个QuerySet对象的时候,Django并不会立即向数据库发出查询命令,只有在你需要用到这个QuerySet的时候才会这样做。
    2.Objects是django实现的mvc中的m,Django中的模型类都有一个objects对象,它是一个Django中定义的QuerySet类型的对象,它包含了模型对象的实例。
    3.不能,因为get可能会有异常,可以用filter函数,如下
    >>> Entry.objects.filter(blog__id__exact=1)# 显示的使用__exact
    >>> Entry.objects.filter(blog__id=1)# 隐含的使用__exact>>> Entry.objects.filter(blog__pk=1)# __pk 相当于 __id__exact
    查询集分两种,一种就是浏览器里输入url,服务器端响应的时候,把url拆成查询集,用字典存get和post的参数和值。还有一种是mvc模式里面,查询结果放在查询集里面,就想像成一张表就行了啊。


    二、
    queryset是一个class,在文档里有说明。比如objects.all()返回的就是。不过有时候返回的不是queryset,这是另一个问题了。  queryset里有丰富的信息。除了返回的数据结构外,还可以结合数据字典做成一个可扩展的数据库查询语句。

    objects应该是一个静态的类。通常查询一个数据库用all,get,query等方法。为了提高效率可以加一些过滤器,减少查询的数据量,也可以减少重新查询与索引来提高效率。

    for in list这个是模板里的语法。list通常可以用objects.get, 或者是query或者是get等获得,也可以自己重新拼装后成生一个list或者是dict之类的东西。

    objects.get是可以获得一个文章,这里要做一个异常判断(似乎是要做),如果取不到文章会报异常。pk=...就可以获得一个指定的文章。

    通过for i in list中的列表,然后,,再是url通过view传递参数过来,再通过objects.get获取文章内容,通过另一个view和template显示出来。应该就可以了。这些例子代码,有几个教程上有。好象limodou的教程里有。有些老。
    追问:
    那请问我该去哪查objects有哪些方法可用呢?
    追答:
    这个问题问得好。通常python都有自省功能。直接用dir(....method or object...)就可以看到。用help(...)也可以看到。 不过就这个问题来说你直接到www.djangoproject.com网站上,它有一个tutor,还有一个库的说明。这个库的说明里有针对objects的说明说明。

    我常用的有all, get , filter, query


    来自百度知道:http://zhidao.baidu.com/link?url=fBMF7HEj7dcwwfIECtvgSgJj46eKbHTB6EuFAasvl3EyaZIe2N0Hpvyc44ENmpl4SGWfCCa-0YfqQkl8qmr-2a



  • 相关阅读:
    准备试用一下PHPUnit
    php dump 当前所有局部变量
    利用JNI动态链接库实现Java调用Jerasure库
    CentOS 5.5下配置新的Java环境
    Eclipse安装SVN插件
    hadoop0.20.2 Eclipse下编译过程
    学习ant——Java的Build工具
    CentOS5.5下安装MySQL 5.5全过程
    转载:Hadoop0.20.2集群的安装配置
    Linux 下使用Java连接MySQL数据库,并且实现插入、删除、选择操作
  • 原文地址:https://www.cnblogs.com/snapeliu/p/4980994.html
Copyright © 2011-2022 走看看