过滤模型数据

时间:2012-03-27 16:29:52

标签: django django-models

代码:

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中的数据库访问非常烦人

1 个答案:

答案 0 :(得分:2)

请注意最后的[limit:],是指[:limit]?

此外,一个过滤器内的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]