Как в Django ORM реализовать many-to-many
Python
Middle
Без компании
Как в Django ORM реализовать many-to-many
Ответы
В Django ORM связь many-to-many реализуется через `ManyToManyField`. Она создаёт промежуточную таблицу для хранения связей между моделями.
Пример:
```
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)
```
Особенности:
- Django автоматически создаёт промежуточную таблицу
- Можно указать `through` для кастомной промежуточной модели
- Доступны методы `add()`, `remove()`, `clear()`, `set()`
- Запросы: `Book.objects.filter(authors__name='Пушкин')`
Кастомная промежуточная модель:
```
class Membership(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
date_joined = models.DateField()
class Book(models.Model):
authors = models.ManyToManyField(Author, through='Membership')
```