2012-03-27 89 views
0

代碼:過濾模型數據

class JobsManager(models.Manager): 
    def get_active_by_category(self, cat, limit): 
     import datetime 
     from django.db.models import Q 
     return self.filter(Q(category__exact=cat), Q(is_activated__exact=True), expires_at__gt=datetime.datetime.now()).values('id').order_by('-expires_at')[limit:] 

即使我提供存在類別(CAT),我相信,我已經激活,而不是從這一類數據庫中該方法始終返回空列表過期作業。

我做錯了什麼?在Django

數據庫訪問這麼多煩人

+0

「我確信我已經激活了,但沒有過期的數據庫中這個類別的工作」證明它。 – 2012-03-27 16:36:51

回答

2

請注意[限制:]在最後,你的意思[:限制]?

另外,對於一個過濾器內的AND條件,Q不是必需的,默認情況下使用__exact查找。所以它可能是

class JobsManager(models.Manager): 
    def get_active_by_category(self, cat, limit): 
     import datetime 
     return self.filter(category=cat, is_activated=True, 
      expires_at__gt=datetime.datetime.now()).values('id').order_by('-expires_at')[:limit]