Встречается на собеседованиях • сегодня

Как работает many-to-many под копотом

В Django many-to-many реализуется через промежуточную таблицу, которая хранит связи между объектами. При создании связи ManyToManyField Django автоматически создает эту таблицу.

Пример:

python
class Book(models.Model):
    authors = models.ManyToManyField('Author')

class Author(models.Model):
pass

text

Под капотом Django создаст таблицу `appname_book_authors` с полями:
- `id` - первичный ключ
- `book_id` - внешний ключ к Book
- `author_id` - внешний ключ к Author

Можно явно указать промежуточную модель через `through`:
```python
class BookAuthor(models.Model):
    book = models.ForeignKey(Book)
    author = models.ForeignKey(Author)
    date_added = models.DateField()

class Book(models.Model):
    authors = models.ManyToManyField(Author, through='BookAuthor')

Операции с M2M работают через менеджер отношений, который генерирует SQL-запросы для работы с промежуточной таблицей.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы