django从queryset获得不同的外键

问题描述

| 我有一个很大的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!     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...