的model效率不是很高,特别是在做大量的数据库操作的时候,如果你只用django来开企业站或者外包项目的话,那可以小跳过下,而你恰巧是效率狂或者说是对程序的效率要求比较高的话,那就要注意下面的几个方法。
1. count()方法:我们想用count方法来获取记录的条数可以采用下面的方法:num = info.objects.filter('...').count()我们来看下django model模块里面count方法是怎么写的?def count(self):"""Performs a SELECT COUNT() and returns the number of records as aninteger.If the QuerySet is already fully cached this simply returns the lengthof the cached results set to avoid multiple SELECT COUNT(*) calls."""if self._result_cache is not None and not self._iter:return len(self._result_cache)return self.query.get_count(using=self.db)从上面的看来,djang model的count()要执行SELECT COUNT()语句,其实是查询了下数据库,这样如果记录比较多的情况下,查询数据库的效率还是比较高的.比如我们可以用len()方法来求长度的话,使用的迭代,效果更低。info = info.objects.filter('...')num = len(info)2多用切片比如我们要查询数据的话,如果你的数据量比较大的情况下,你没有限定要查询的范围,对系统的开销会非常的大,比如你要分页的显示新闻数据,那你就要按照一页要显示多少数据,就读取多少数据,而不是一次起把数据全部给读出来,然后再根据限定的条件来显示的数据。比如你要显示前10条的新闻的话按照下面的方法来做:news = News.objects.all()[1:10]而不是:news = News.objects.all()news = news[1:10]因为news = News.objects.all()news = news[1:10]你是把数据库里的数据全部给读出来,这样效率不是很高。上面说的这几点是提高django model效率的几个小方法,希望大家平时在用django开发项目的时候要注意一些效率方面的东西。