【发布时间】:2013-05-04 07:55:20
【问题描述】:
我无法让我的自定义管理器工作...
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 中测试时,它不起作用
>>> 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,对吗?有什么想法可能出了什么问题?
【问题讨论】:
-
你用的是什么版本的 django?曾经是 get_query_set 。除此之外,我不知道。
-
是的,我在文档中看到了,但我使用的是 1.5.0
-
>>> django.VERSION (1, 5, 0, 'final', 0)
-
时区问题?尝试在管理器和交互式控制台中检查
timezone.now()。
标签: python django python-2.7 django-models