2011-05-24 5 views
0

J'ai une grande base de données MySQL et django im luttent pour obtenir ce travail efficacement:django obtenir ForeignKeys distincts de queryset

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) 

J'aimerais obtenir toutes les catégories actives basées sur l'ensemble de requêtes. Je fais réellement de cette façon:

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 retour sur 50k résultats donc ce n'est pas efficace du tout.

Une idée ou des pointeurs?

Merci!

+0

que signifie __gt, __in? havent les vu avant! –

Répondre

0

J'ai finalement eu quelque chose de travailler avec ceci:

now = datetime.datetime.now() 
filters = { 
    'article__active': True, 
    'article__start_date__lte':now, 
    'article__end_date__gte':now, 
} 
categs = Category.objects.filter(**filters).distinct() 

stupide moi et merci Django!