2011-05-24 93 views
0

得到不同foreignkeys我有一個大的Django MySQL數據庫和IM努力讓這對提高工作效率:的Django從查詢集

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

__gt,__in是什麼意思? 以前沒有見過! – 2012-03-04 08:09:16

回答

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的感謝!