Python中QuerySet和Objects类

一、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
时间: 2024-10-07 20:33:33

Python中QuerySet和Objects类的相关文章

22.python中的面向对象和类的基本语法

当我发现要写python的面向对象的时候,我是踌躇满面,坐立不安呀.我一直在想:这个坑应该怎么爬?因为python中关于面向对象的内容很多,如果要讲透,最好是用面向对象的思想重新学一遍前面的内容.这个坑是如此之大,犹豫再三,还是只捡一下重要的内容来讲吧,不足的内容只能靠大家自己去补充了. 惯例声明一下,我使用的版本是 python2.7,版本之间可能存在差异. 好,在开讲之前,我们先思考一个问题,看代码: 为什么我只创建是为 a 赋值,就可以使用一些我没写过的方法? 可能会有小伙伴说:因为 a

Python 中的引用和类属性的初步理解

最近对Python 的对象引用机制稍微研究了一下,留下笔记,以供查阅. 首先有一点是明确的:「Python 中一切皆对象」. 那么,这到底意味着什么呢? 如下代码: #!/usr/bin/env python a = [0, 1, 2] # 来个简单的list # 最初,list 和其中各个元素的id 是这样的. print 'origin' print id(a),a for x in a: print id(x), x print '----------------------' # 我们把

关于如何在Python中使用静态、类或抽象方法的权威指南

Python中方法的工作方式 方法是存储在类属性中的函数,你可以用下面这种方式声明和访问一个函数 >>> class Pizza(object): ... def __init__(self, size): ... self.size = size ... def get_size(self): ... return self.size ... >>> Pizza.get_size <unbound method Pizza.get_size> Python

如何在Python中实现这五类强大的概率分布

R编程语言已经成为统计分析中的事实标准.但在这篇文章中,我将告诉你在Python中实现统计学概念会是如此容易.我要使用Python实现一些离散和连续的概率分布.虽然我不会讨论这些分布的数学细节,但我会以链接的方式给你一些学习这些统计学概念的好资料.在讨论这些概率分布之前,我想简单说说什么是随机变量(random variable).随机变量是对一次试验结果的量化. 举个例子,一个表示抛硬币结果的随机变量可以表示成 Python 1 2 X = {1 如果正面朝上, 2 如果反面朝上} 随机变量是

Python中的静态方法与类成员方法区分

学习python过程中对类声明中的"静态方法"与"类成员方法"有过那么一丝混淆,简略总结了一下两者声明方式和功能上的异同,如下: # -*- coding:utf-8 -*- class Test(object): value1 = 'value1' #定义类变量value1 def __init__(self): self.value2 = 'value2' #在构造函数中定义实例变量value2 @staticmethod def method1() print

关于python中的 object基类

参考:[1] stackoverflow: what is the difference between old style and new style classes in Python? [2] The Inside Story on New-style Classes

Python中怎样初始化一个类类class?

1 # 12-1 FP树的类定义 2 class treeNode: 3 def _init_(self,nameValue,numOccur,parentNode): 4 self.name=nameValue; # 节点的名字 5 self.count=numOccur; # 出现次数 6 self.nodeLink=None; # 链接相似的元素项 7 self.parent=parentNode; # 父节点 8 self.children={}; # 子节点 9 def inc(sel

Python中的元类(译)

add by zhj: 这是大stackoverflow上一位小白提出的问题,好吧,我承认我也是小白,元类这块我也是好多次想搞明白, 但终究因为太难懂而败下阵来.看了这篇文章明白了许多,再加下啄木鸟社区的 Python 类型和对象  这篇文章.卧槽, 这简直就是珠联璧合,日月神剑啊,尼玛.终于干掉了元类.翻译时有修改,建议与原文一起看. 原文:http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python?answe

python进阶五(定制类)【5-3python中__len__】

python中 __len__ 如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数. 要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数. 例如,我们写一个 Students 类,把名字传进去: 1 class Students(object): 2 def __init__(self, *args): 3 self.names = args 4 def __len__(self): 5 return len(self.names