我有两个模型:工作和位置:
class Job(models.Model):
title = models.CharField(max_length=20)
company = models.CharField(max_length=20)
location = ForeignKey('Location')
class Location(models.Model):
country = models.CharField(max_length=20)
state = models.CharField(max_length=20)
city = models.CharField(max_length=20)
latitude = models.FloatField(blank=True, default=0.0)
longitude = models.FloatField(blank=True, default=0.0)
big-city = ForeignKey('Location')
假设:我的数据库中有 US/Calif/San-Fran、US/Calif/San_Jose、US/Calif/Alameda 和 US/Calif/Oakland。我还有经理/Ebay/San-Fran、会计/Amazon/San-Jose、Coop/IBM/Oakland 和主管/Dell/Alameda。
另外: San-Fran 将自己称为 big_city,而 San-Jose、Alameda 和 Oakland 将 San-Fran 作为他们的大城市。
现在,当有人在 San-Fran 搜索所有工作时,我会执行这样的查询。
Job.objects.filter(
location__country='US',
location__state='Calif',
location__city='San-Fran').selected_related('Location')
但是,我想允许按地区搜索,用户可以在其中搜索 San-Fran 地区的所有工作。这将是 San-Fran、Oakland、Alameda 和 San-Jose 的所有工作吗?
就像“告诉我所有有其位置的工作都被其他位置引用”。
这会被称为双连接吗?
理想情况下,我会使用 lat-lon-radius (稍后的练习),但现在我想知道如何使用双连接来做到这一点。
谢谢。
Vn44ca