我无法让我的自定义经理工作...
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,对吧?任何想法可能出什么问题吗? 最佳答案
我确定问题是get_query_set
方法。 This is the doc for version 1.5管理员,它说:
尝试使用get_query_set
而不是get_queryset
来做到这一点,这在dev doc中进行了说明:
如果您希望100%肯定版本中方法的名称,请转到Manager
中的django/db/models/manager.py
类定义,然后在类中搜索方法的命名方式。
希望能帮助到你!