为所有查询选择相关
使用 ForeignKey 的模型
我们将使用这些模型:
from django.db import models
class Book(models.Model):
name= models.CharField(max_length=50)
author = models.ForeignKey(Author)
class Author(models.Model):
name = models.CharField(max_length=50)
假设我们经常(总是)访问 book.author.name
在视野中
我们每次都可以使用以下内容
books = Book.objects.select_related('author').all()
但这不是干。
定制经理
class BookManager(models.Manager):
def get_queryset(self):
qs = super().get_queryset()
return qs.select_related('author')
class Book(models.Model):
...
objects = BookManager()
注意 :必须为 python 2.x 更改对 super
的调用
现在我们必须在视图中使用的是
books = Book.objects.all()
并且不会在模板/视图中进行其他查询。