port port
Искусственный Интеллект
(181514)
3 года назад
Так словари-то на кой ляд в Пайтоне существуют? Лепи словарь, в котором область является ключом, к которому прицеплены все ее города... Это будет работать быстрее всего. Можно изгаляться словарем, в котором ключом является пара "область-город", а потом делать выборку по вхождению области или города. Можно и к городам прицепить их области, единственное, что города бывают с одинаковыми названиями в разных областях, поэтому придется это учесть. Да еще несколько вариантов можно предложить, если начать думать не посреди ночи...
# Модель города
class City(models.Model):
city_name = models.CharField('название города', max_length=50)
def __str__(self):
return self.city_name
class Meta:
verbose_name = "Город"
verbose_name_plural = "Города"
# Модель региона
class Region(models.Model):
region_name = models.CharField('название региона', max_length=150)
def __str__(self):
return self.region_name
class Meta:
verbose_name = "Регион"
verbose_name_plural = "Регионы"
# Модель связи города и региона в одну таблицу "География"
class Geography(models.Model):
Region = models.ForeignKey('Region', on_delete=models.CASCADE)
City = models.ForeignKey('City', on_delete=models.CASCADE)
def __str__(self):
return self.Region.region_name
class Meta:
verbose_name = "География"
verbose_name_plural = "Географии"
Достаю все объекты из модели такой командой:
geography_city_and_region = Geography.objects.all()