Django“懒惰查询执行”原则

时间:2016-11-27 10:00:01

标签: django database

如果Django没有使用“懒惰查询执行”原则,那么主要问题是什么?

 q = Entry.objects.filter(headline__startswith="What")
 q = q.filter(pub_date__lte=datetime.date.today())
 q = q.exclude(body_text__icontains="food")
 print(q)

当print(q)执行时它会命中数据库。

1 个答案:

答案 0 :(得分:2)

可能会出现几个问题,

  • 如果django按q = Entry.objects.filter(headline__startswith="What")命中,则必须将QueryDict存储到q中。由于这个简单的原因,它会出现数据类型,内存,时间复杂度等问题。(

  • 之后你就不会得到那个很棒的功能q.filter(.....)。因为当时已经有价值所以,它不是一个可能的架构。但现在它存储了对象,变量就像一个对象。