问题描述
|
我有一个很大的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的结果,所以这根本没有效率。
有任何想法或指示吗?
谢谢 !
解决方法
我终于有了一些与此有关的东西:
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!