LOADING

Follow me

关于Django QuerySet的一些注意点
十一月 12, 2013|IT

关于Django QuerySet的一些注意点

关于Django QuerySet的一些注意点
  1. 获取对象
  2.  
  3.  
  4. Django Book附录中,获取对象都使用下面这样的代码实现的:
  5.  
  6.  
  7. >>> blogs = Blog.objects.filter(author__name__contains=”Joe”)
  8.  
  9.  
  10. 在这幕后会有相当多的步骤:当你从数据库中获取对象的时候,你实际上用 Manager 模块构造了一个 QuerySet ,这个 QuerySet知道怎样去执行SQL语句并返回你想要的对象。
  11.  
  12.  
  13.  
  14.  
  15.  
  16. QuerySet 代表了你的数据库中的对象的一个集合。它根据所给参数可以构造若干个 过滤器 来缩小这个集合的规模。用SQL术语来讲,一个 QuerySet 就相当于一个 SELECT 语句,过滤器相当于诸如 WHERE 或者 LIMIT 的限定语。
  17.  
  18.  
  19. 你通过模块的 Manager 就可以得到一个 QuerySet 。每个模块至少有一个 Manager ,默认名称是 objects 。可以通过模块类来直接访问它,比如:
  20.  
  21.  
  22. >>> Blog.objects
  23.  
  24.  
  25. <django.db.models.manager.Manager object at 0x137d00d>
  26.  
  27.  
  28. 为了强制分离数据表级别的操作和数据记录级别的操作, Manager 只能通过模块类而不是模块实例来访问:
  29.  
  30.  
  31. >>> b = Blog(name=’Foo’, tagline=’Bar’)
  32.  
  33.  
  34. >>> b.objects
  35.  
  36.  
  37. Traceback (most recent call last):
  38.  
  39.  
  40.   File “<stdin>”, line 1, in <module>
  41.  
  42.  
  43. AttributeError: Manager isn’t accessible via Blog instances.
  44.  
  45.  
  46. 对一个模块来讲, Manager 是 QuerySets 的主要来源。它就像一个根本的 QuerySet ,可以对模块的数据库表中的所有对象进行描述。比如, Blog.objects 就是包含着数据库中所有的 Blog 对象的一个根本的 QuerySet 。

 

no comments
Share

发表评论