2012-03-27 85 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]