為所有查詢選擇相關

使用 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()

並且不會在模板/檢視中進行其他查詢。