循环中引用的Django ManyToManyField

时间:2019-02-19 19:13:33

标签: python django many-to-many

我的问题看起来像这样-在循环中我需要多次引用许多字段。每次我必须使用另一个ID进行操作时。我能想到的每个解决方案似乎都很沉重,我想做得整洁干净,我只是个主意(问题可能是我对Django和Python的一点了解)。 现在我有这样的东西(它显然不起作用):

    projects = Project.objects.order_by('name').values()
    for project in projects:
        currentProject = Project.objects.get(pk=project['id'])
        projects[index] = {
            'genres': currentProject.genres.all().values()
        }
     context = {
     'projects': projects,
     }

大约2个小时以来,我一直在寻找答案,但找不到我想要的东西,因此希望这里有人能给我一些建议。谢谢

3 个答案:

答案 0 :(得分:0)

如果您要尝试创建的所有项目的二维流派列表按其名称排序。然后,

 projects = [list(cur_project.genres.all()) for cur_project in Project.objects.all().order_by('name')]

答案 1 :(得分:0)

也许您需要使用prefetch_related

projects = Project.objects.prefetch_related('genres_set')

答案 2 :(得分:0)

如果我是你,我会隔离ID, 并使用它:

projects= Projects.objects.filter(id__in=list_of_ids)

它为给定的ID返回多个对象。