Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django中的项目列表以分类形式获取queryset_Python_Django_Django Orm - Fatal编程技术网

Python 使用Django中的项目列表以分类形式获取queryset

Python 使用Django中的项目列表以分类形式获取queryset,python,django,django-orm,Python,Django,Django Orm,我的个人模型如下: class person(models.Model): interests = models.ManyToManyField(Ineterest, default=None) class Article(models.Model): category = models.ManyToManyField(Interest, default=None) 利息模型: class Interest(models.Model): int

我的个人模型如下:

class person(models.Model):
        interests = models.ManyToManyField(Ineterest, default=None)
class Article(models.Model):
        category = models.ManyToManyField(Interest, default=None)
利息模型:

class Interest(models.Model):
        interest = models.CharField(max_length=100)
文章模型如下:

class person(models.Model):
        interests = models.ManyToManyField(Ineterest, default=None)
class Article(models.Model):
        category = models.ManyToManyField(Interest, default=None)
我只想筛选分类形式的文章,列出与之相关的所有文章示例如下:
[{'category':'Finance','articles':['articleobj-1','articleobj-2']},{'category':'Business','articleobj-1','articleobj-2','articleobj-3']}
可以通过访问反向多对多来完成。 需要与预取相关的,以避免进行多次查询

qs = Interest.objects.prefetch_related('article_set')
[{'category': i.interest, 'articles': [a for a in i.article_set.all()]} for i in qs]

很好,但当我将在生产版本中使用时,由于ForLoop,从AWS DB中获取文章需要时间,因此有没有办法在没有ForLoop的情况下获取相同的queryset?无论您有多少文章和兴趣,这只会创建2个数据库查询
prefetch\u related
会处理好的,我会实现它,让我们看看这个查询有多有效?是的。您可以使用django调试工具栏监视它创建的数据库查询。