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将始终以相反的方式自动添加(概念)关系(除非您明确禁用此功能)。