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