我有一个很大的django MySQL数据库,我正努力让这个有效地工作:
models.py:
class Category(models.Model)
name = models.CharField()
class Article(models.Model)
start_date = models.DateTimeField(...)
end_date = models.DateTimeField(...)
active = models.BooleanField(...)
categories = models.ManyToManyField( Category )
我想根据文章查询集获取所有活动类别。我实际上是这样做的:
actives_articles = Articles.objects.filter(start_date__gt = datetime.datetime.today(), end_date__lt = another_date, active = True)
actives_categories = Category.objects.filter(article__in = actives_articles).distinct().order_by('name')
actives_articles
返回大约50k的结果,所以这根本没有效率。
任何想法或指示?
谢谢!
答案 0 :(得分:0)
我终于有了一些工作:
now = datetime.datetime.now()
filters = {
'article__active': True,
'article__start_date__lte':now,
'article__end_date__gte':now,
}
categs = Category.objects.filter(**filters).distinct()
傻傻的,谢谢Django!