django 实例,django入门与实践教程.PDF

  学习笔记,仅供参考,有错必纠。

  参考:Django搭建大型企业官网————黄Y;公文

  QuerySet转换SQL

  生成QuerySet对象不会立即转换为SQL语句。例如,我们获取图书表下的所有图书:

  books=Book.objects.all()

  Print(connection.queries)打印connection.queries时,会返回一个空列表,表示上面的QuerySet没有真正执行。

  在下列情况下,QuerySet将被转换为SQL语句执行:

  迭代:遍历QuerySet对象时,会先执行SQL语句,然后返回结果进行迭代。例如,下面的代码将被转换为SQL语句:for book in Book.objects.all():

  Print(book)使用步长切片:QuerySet可以像列表一样切片。切片操作本身不会执行SQL语句,但是如果在切片操作过程中提供了步长,SQL语句会立即执行。需要注意的是,切片后不能执行filter方法,否则会报错。调用len函数:调用len函数获取QuerySet中的数据总数也会执行SQL语句。调用list函数:调用list函数将QuerySet对象转换为list对象也会立即执行SQL语句。判断:如果判断出一个QuerySet,则立即执行SQL语句。