我的Django应用程序中有两个模型,Project和ProjectCategory,而Project有这个多值字段 category 。
class ProjectCategory(models.Model):
name = models.CharField(max_length=200)
...
class Project(models.Model):
category = models.ManyToManyField(ProjectCategory)
name = models.CharField(max_length=40)
...
我正在检索所有项目对象并将其保存在名为 portfolio 的列表中,现在我想为每个类别制作项目列表,但我想在不制作任何项目的情况下进行其他查询。
所以我必须搜索每个项目 category 字段中存在的每个类别(这是在对象列表中搜索对象)
portfolio = Project.objects.all().order_by('name')
categories = ProjectCategory.objects.all()
for category in categories:
portfolio.filter(category__name=category.name)
...但我是Python的新手,我不知道如何有效地做到这一点。我不确定我是否会像现在一样在代码中创建新查询。对此最好的方法是什么?谢谢!
答案 0 :(得分:0)
您可以将多个查找传递给.prefetch_related()
portfolio = Project.objects.all().order_by('name').prefetch_related()