Очень часто модель надо связать со множеством экземпляров другой модели. Например модель "Город" и модель "Район". В такой логике у нас будет один город и множество районов города. Связать такие модели можно через метод ManyToManyField.
Например:
class City(models.Model): name = models.CharField( max_length=255, verbose_name="название города" ) area = models.ManyToManyField( Area, verbose_name="район" ) class Area(models.Model): name = models.CharField( max_length=255, verbose_name="название района" )
Так у нас город будет связан со множеством районов.
Программно создать модели можно так:
# создание города city = City.objects.create(name="Москва") # создание районов area_1 = Area.objects.create(name="ЦАО") area_2 = Area.objects.create(name="ЗАО") area_3 = Area.objects.create(name="ЮАО") # прикрепление районов к городу city.area.add(area_1) city.area.add(area_2) city.area.add(area_3)
Если нужно удалить одну связку ManyToManyField:
# получение города city = City.objects.filter(name="Москва").first() # получение района area = Area.objects.filter(name="ЦАО").first() # удаление района у города city.area.remove(area)
Очистить все связки ManyToManyField:
# получение города city = City.objects.filter(name="Москва").first() # удаление всех районов города city.area.clear()