django queryset将foreignkey对象输出到ModelChoiceField

django queryset将foreignkey对象输出到ModelChoiceField,django,django-forms,Django,Django Forms,我有一份地点清单: class Location(models.Model): name = models.CharField() class Point(models.Model): name = models.CharField() location = models.ForeignKey('Location') 每个点都属于一个位置: Location A Location B Location C 我想为forms.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
我想为forms.ModelChoiceField提供一个查询集,以便它只显示在数据库中具有关联点的位置(在上面的示例中,它应该只返回位置a和位置B)

在SQL语言中,它将是: 选择location.*从location.id=punto.location\u id上的位置连接点

我花了两个小时阅读Django文档,但是我找不到任何方法来做我需要的事情。。。有什么建议吗?

您可以查询:

Point 1 -> Location A
Point 2 -> Location B
Location.objects.filter(point\uu isnull=False).distinct()
严格来说,不需要,但如果没有
.distinct()
,您将检索数据库中每个
位置的相关
点的次数。

您可以通过以下方式进行查询:

Point 1 -> Location A
Point 2 -> Location B
Location.objects.filter(point\uu isnull=False).distinct()

严格来说没有必要使用,但是如果没有
.distinct()
,您将检索数据库中每个
位置的相关
点。

谢谢!我不知道我可以在过滤器中使用反向引用@马蒂亚弗加:是的。Django将始终自动反向添加(概念)关系(除非您明确禁用此功能)。谢谢!我不知道我可以在过滤器中使用反向引用@马蒂亚弗加:是的。Django将始终以相反的方式自动添加(概念)关系(除非您明确禁用此功能)。