簡體   English   中英

Django自定義管理器get_queryset()無法正常工作

[英]Django custom manager get_queryset() not working

我不能讓我的自定義經理工作......

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方法。 這是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%肯定,請轉到django/db/models/manager.py Manager類定義,並搜索如何在類中命名該方法。

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM