【问题标题】:Django Filter taking list of foreign key modelDjango过滤器获取外键模型列表
【发布时间】:2020-09-23 10:22:09
【问题描述】:

我有这两个模型 Route 和 Project 以及一个关系模型:

class ProjectRoute(models.Model):
    #Fk
    project                     = models.ForeignKey(Project, null = False, on_delete = CASCADE)
    route                       = models.ForeignKey(Route, null = False, on_delete = CASCADE)

拥有项目 ID 我想检索路线列表。

relations = ProjectRoute.objects.filter(project__id = project_id)

有了这个过滤器,我就有了一个 ProjectRoute 列表。我想要的是唯一路由的查询集。 像这样的东西(不起作用):

routes = ProjectRoute.objects.filter(project__id = project_id).value_list(route)

有可能吗?

编辑:

这是现在的代码。我想删除 FOR:

routes_relations           = ProjectRoute.objects.filter(project__id = project_id)
routes = []
for rr in routes_relations:
    routes.append(rr.route)
return routes

【问题讨论】:

  • 就是你想通过project_id检索Routes,对吗?

标签: django


【解决方案1】:

要检索与 project_id id 关联的所有 Route,请使用以下查询

Route.objects.filter(<b>projectroute__project_id=project_id</b>).distinct()

【讨论】:

  • 它有效。我认为 Django 足够聪明,可以通过 RelationsModels 知道 Route 与 Project 有关系,并允许我们直接在模型中进行查询。
猜你喜欢
  • 2018-03-19
  • 2018-02-03
  • 2012-07-15
  • 2013-09-23
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 2019-06-30
  • 2020-08-02
相关资源
最近更新 更多