自定义模型管理器无法正常工作

custom model manager not working properly

我正在关注有关使用自定义模型管理器的 django 教程,但无法弄清楚为什么这不起作用。

我正在尝试使用自定义模型管理器来仅过滤数据库中标记为活动的帖子,因此它不会显示尚未完成的帖子。

模特经理

class PostManager(models.Manager):

    def get_query_set(self):

         return super(PostManager, self).get_query_set().filter(is_active=True)

型号

class Post(models.Model):

    title = models.CharField(max_length = 100)
    description = models.TextField(max_length = 500)
    body = models.TextField(blank = True)
    created = models.DateTimeField(auto_now_add = True)
    modified = models.DateTimeField(auto_now_add = True)
    is_active = models.BooleanField(default = 1)
    allow_comments = models.BooleanField(default = 1)
    category= models.ForeignKey(Category)
    creator = models.ForeignKey(User)
    slug = models.SlugField(unique = True)

    active = PostManager() #Gets just the active posts
    objects = models.Manager()

然后我尝试使用 posts= Post.active.all() 过滤活跃帖子 现在,如果我将其更改为 posts = Post.active.filter(is_active=True) 它会起作用并仅过滤活动帖子,但我可以在没有自定义管理器的情况下做到这一点。不,了解这里发生的事情。

内置方法是 get_queryset() 而不是 get_query_set() 所以你应该重写 get_queryset() 并调用父类的 class get_queryset() 方法。

class PostManager(models.Manager):

    def get_queryset(self):
        return super(PostManager, self).get_queryset().filter(is_active=True)