Назад к вопросам
Junior — Middle
80
Каким образом в Django ORM осуществляется управление связью типа many-to-many?
Компании, где спрашивали
Стилсофт
Ответ от нейросети
sobes.tech AI
В Django ORM связь many-to-many реализуется через специальную промежуточную таблицу, которая хранит пары ключей из связанных моделей.
По умолчанию Django автоматически создаёт эту таблицу, если явно не указана своя модель для связи.
Пример:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
Здесь authors — это поле many-to-many, которое создаёт таблицу с двумя колонками: book_id и author_id.
Можно также определить свою промежуточную модель, если нужно добавить дополнительные поля:
class Authorship(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
role = models.CharField(max_length=50) # например, "редактор"
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author, through='Authorship')
Таким образом, Django ORM управляет связью many-to-many через промежуточную таблицу и предоставляет удобный API для добавления, удаления и запроса связанных объектов.