关于Django QuerySet的一些注意点

  1. 获取对象


  2. Django Book附录中,获取对象都使用下面这样的代码实现的:


  3. >>> blogs = Blog.objects.filter(author__name__contains="Joe")


  4. 在这幕后会有相当多的步骤:当你从数据库中获取对象的时候,你实际上用 Manager 模块构造了一个 QuerySet ,这个 QuerySet知道怎样去执行SQL语句并返回你想要的对象。





  5. QuerySet 代表了你的数据库中的对象的一个集合。它根据所给参数可以构造若干个 过滤器 来缩小这个集合的规模。用SQL术语来讲,一个 QuerySet 就相当于一个 SELECT 语句,过滤器相当于诸如 WHERE 或者 LIMIT 的限定语。


  6. 你通过模块的 Manager 就可以得到一个 QuerySet 。每个模块至少有一个 Manager ,默认名称是 objects 。可以通过模块类来直接访问它,比如:


  7. >>> Blog.objects


  8. <django.db.models.manager.Manager object at 0x137d00d>


  9. 为了强制分离数据表级别的操作和数据记录级别的操作, Manager 只能通过模块类而不是模块实例来访问:


  10. >>> b = Blog(name='Foo', tagline='Bar')


  11. >>> b.objects


  12. Traceback (most recent call last):


  13.   File "<stdin>", line 1, in <module>


  14. AttributeError: Manager isn't accessible via Blog instances.


  15. 对一个模块来讲, Manager 是 QuerySets 的主要来源。它就像一个根本的 QuerySet ,可以对模块的数据库表中的所有对象进行描述。比如, Blog.objects 就是包含着数据库中所有的 Blog 对象的一个根本的 QuerySet 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值