【发布时间】:2014-09-03 15:18:51
【问题描述】:
我很难理解模型管理器在 Django 1.6 中的工作原理。
我不明白让这段代码工作的魔力在哪里。
在 get_queryset(self) 方法中没有对 Book 类的任何引用,所以 DahlBookManager 怎么知道它需要在执行 super(DahlBookManager, self) 时使用 Book 实例(没有引用 Book 模型,据我所知,self 指的是“DahlBookManager”类型的对象,而不是 Book)。
所以要么有某种魔法,要么我真的需要检查我的 Python 101。 我很乐意得到一些帮助,谢谢!
# First, define the Manager subclass.
class DahlBookManager(models.Manager):
def get_queryset(self):
return super(DahlBookManager, self).get_queryset().filter(author='Roald Dahl')
# Then hook it into the Book model explicitly.
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
objects = models.Manager() # The default manager.
dahl_objects = DahlBookManager() # The Dahl-specific manager.
【问题讨论】:
-
但是你已经在
dahl_objects = DahlBookManager()中将这个经理专门关联到Book对吧?