Django自定义管理器get_queryset()不工作 [英] Django custom manager get_queryset() not working

查看:187
本文介绍了Django自定义管理器get_queryset()不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不能让我的自定义管理器工作...

I can't make my custom manager work...

class PublicArtigoManager(models.Manager):
    def get_queryset(self):
        return super(PublicArtigoManager, self).get_queryset().filter(data_publicacao__lte=timezone.now()).filter(permissao__lte=3)

class Artigo(models.Model):
    ...
    objects = models.Manager()
    publics = PublicArtigoManager()

当我在shell中测试时,它不工作

when I test in the shell, It doesnt work

>>> from artigos.models import Artigo
>>> from django.utils import timezone
>>> print Artigo.objects.count()
9960
>>> print Artigo.publics.count()
9960
>>> print Artigo.objects.filter(data_publicacao__lte=timezone.now()).filter(permissao__lte=3).count()
9959

Artigo.publics.count()应该返回9959,对吧?任何想法可能会出错?

Artigo.publics.count() should return 9959, right? Any ideas what might be going wrong?

推荐答案

我确定问题是 get_query_set 方法。 这是1.5版本的经理文档,它说:

I'm sure the problem is the get_query_set method. This is the doc for version 1.5 managers and it says:


您可以通过覆盖Manager.get_query_set()方法来覆盖Manager的基本QuerySet。 get_query_set()应该返回一个具有所需属性的QuerySet。

You can override a Manager‘s base QuerySet by overriding the Manager.get_query_set() method. get_query_set() should return a QuerySet with the properties you require.

尝试使用 get_query_set 而不是 get_queryset 这是如何在 dev doc


您可以通过覆盖Manager.get_queryset来覆盖Manager的基本QuerySet () 方法。 get_queryset()应该返回一个具有您需要的属性的QuerySet。

You can override a Manager‘s base QuerySet by overriding the Manager.get_queryset() method. get_queryset() should return a QuerySet with the properties you require.

如果要对方法命名为100%在您的版本中,只需在 django / db / models / manager.py 中的管理器类定义中,搜索如何命名为课程中的方法。

If you want to be 100% positive about how the method is named in your version just go to your Manager class definition in django/db/models/manager.py and search how is named the method in the class.

希望有帮助!

这篇关于Django自定义管理器get_queryset()不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆