gpt4 book ai didi

python - Django 自定义管理器 get_queryset() 不工作

转载 作者:太空狗 更新时间:2023-10-29 20:50:09 25 4
gpt4 key购买 nike

我无法让我的自定义管理器工作...

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经理,它说:

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 中是如何解释的:

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 中的 Manager 类定义> 并搜索类中方法的命名方式。

希望对您有所帮助!

关于python - Django 自定义管理器 get_queryset() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16468571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com