為所有查詢選擇相關
使用 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()
並且不會在模板/檢視中進行其他查詢。