代码:
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 :(得分: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]