У меня есть две модели: Работа и местоположение:
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')
Скажем так:
У меня в базе данных есть США / Калифорния / Сан-Фран, США / Калифорния / Сан-Хосе, США / Калифорния / Аламеда и США / Калифорния / Окленд. У меня также есть менеджер / Ebay / San-Fran, бухгалтер / Amazon / San-Jose, Coop / IBM / Oakland & Director / Dell / Alameda.
Также: Сан-Фран имеет большой город, а Сан-Хосе, Аламеда и Окленд имеют Сан-Фран в качестве своего большого города.
Теперь я делаю такой запрос, когда кто-то ищет все вакансии в Сан-Фран.
Job.objects.filter(
location__country='US',
location__state='Calif',
location__city='San-Fran').selected_related('Location')
Однако я хотел бы разрешить поиск по регионам, где пользователь может искать все вакансии в регионе Сан-Фран. Это все работы в Сан-Фран, Окленде, Аламеде и Сан-Хосе?
Как и "Показать мне все задания, ссылки на которые есть в других местах".
Можно ли назвать это двойным соединением?
В идеале я бы использовал lat-lon-radius (более позднее упражнение), но сейчас я хочу знать, как сделать это с двойным соединением.
Thx.
Vn44ca