ORM语句特点: 惰性查询:只有查询到了才会去走数据库only与defer only res=models.Book.objects.only('title') for i in res: i.title title为only括号内字段,i.titke的时候不会走数据库 i.price only括号内没有price字段,需要重新走数据库 defer res=models.Book.objects.defer('title') for i in res: res.price price不在defer中,不走数据库,defer与only相反 总结: only中传的字段就是走数据库查的,返回的res只有这一个字段的内容 而defer中传的字段,不走数据库查询出来,返回的res中有含除了传的字段以外的所有内容selected_related与prefetch_related 与跨表操作有关 selected_related 联表 res = models.Book.objects.select_related('publish') for i in res: res.Publish.name selected__related内部直接将Book表和Pulish表所有的数据封装 这个时候再要数据的时候就不会走数据库 注意点:只能放外键字段(多对多不行) res = models.Book.objects.prefetch_related('publish') for i in res: res.Publish.name prefetch_related内部其实是子查询 总结: selected_related与prefetch_related在使用中 如果两张表很大,在使用selected_related拼表的时候耗时可能会比使用prefetch_relate长 在使用的时候需要视情况而定