django - django queryset 将外键对象输出到 ModelChoiceField
问题描述
class Location(models.Model):
name = models.CharField()
class Point(models.Model):
name = models.CharField()
location = models.ForeignKey('Location')
我有一个位置列表:
Location A
Location B
Location C
每个点都属于一个位置:
Point 1 -> Location A
Point 2 -> Location B
我想为 forms.ModelChoiceField 提供一个查询集,以便它仅显示在数据库中具有关联点的位置(在上面的示例中,它应该只返回位置 A 和位置 B)。
在 SQL 语言中,它将是:SELECT location.* FROM location JOIN point ON location.id = punto.location_id
我花了过去两个小时阅读 Django 文档,但我找不到任何方法来做我需要的……有什么建议吗?
解决方案
您可以通过以下方式查询:
Location.objects.filter(point__isnull=False).distinct()
.distinct()
调用 [Django-doc]严格来说是没有必要的,但如果没有,您.distinct()
将检索每一个Location
,因为它们Point
在数据库中是相关的。
推荐阅读
- javascript - 如何解决 IE11 中的“TypeError:对象不支持属性或方法‘追加’”?
- apache-spark - pyspark 对许多 csv 文件中的数据并行应用函数
- binary - 是否可以使用 32 位系统对 16 位数字进行 XOR 运算?
- swift - 由于 AWSAuthUI 依赖错误,无法显示 AWSMobileClientError 登录屏幕
- python - 从该实例中定义的另一个实例访问一个实例的属性
- python-3.x - python和无服务器框架的问题
- unity3d - Unity:渲染体素和性能所需的帮助
- java - MySQL:来自 information_schema 的结果集不一致
- c# - 使用隐藏到 json、ASP.NET 核心 API 的方法序列化多态 c# 类时出现异常
- if-statement - 将嵌套的条件 If 语句转换为复杂的 NSCompoundPredicate