Ale*_*nko 8 python django django-models python-2.7
我不能让我的自定义经理工作......
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()
Run Code Online (Sandbox Code Playgroud)
当我在shell中测试时,它不起作用
>>> 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
Run Code Online (Sandbox Code Playgroud)
Artigo.publics.count()
应该返回9959,对吗?什么想法可能会出错?
Pau*_* Bu 12
我确定问题是get_query_set
方法.这是1.5版管理员的文档,它说:
您可以通过覆盖Manager.get_query_set()方法来覆盖Manager的基本QuerySet.get_query_set()应返回具有所需属性的QuerySet.
尝试使用它get_query_set
而不是get_queryset
在dev doc中解释它的方式:
您可以通过覆盖Manager.get_queryset()方法来覆盖Manager的基本QuerySet.get_queryset()应返回具有所需属性的QuerySet.
如果你想100%肯定你的版本Manager
中django/db/models/manager.py
如何命名方法,只需转到你的类定义并搜索如何在类中命名方法.
希望能帮助到你!