Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
14 Ноя 2024
2 мин
6664

Зачем нужен related_name в Django?

В мире Django, ORM (Object-Relational Mapping) играет важную роль в взаимодействии с базой данных. Однако, иногда возникают ситуации, когда нужно обращаться к связанным

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

В мире Django, ORM (Object-Relational Mapping) играет важную роль в взаимодействии с базой данных. Однако, иногда возникают ситуации, когда нужно обращаться к связанным моделям. Вот здесь на помощь приходит related_name.

Допустим, у нас есть две модели: Book и Author. Одна книга может иметь много авторов, и один автор может написать много книг. В таком случае, мы скажем, что у модели Book и Author есть отношение «многие ко многим» или ManyToMany.

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    authors = models.ManyToManyField('Author')

class Author(models.Model):
    name = models.CharField(max_length=100)

Когда мы хотим получить все книги определенного автора, мы можем просто использовать author.book_set.all(). Здесь book_set — это автоматически создаваемое Django имя для обратной связи от модели Author к Book.

Но что, если мы хотим использовать более осмысленное имя вместо book_set? Тут на помощь приходит related_name.

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    authors = models.ManyToManyField('Author', related_name='books')

class Author(models.Model):
    name = models.CharField(max_length=100)

Теперь, вместо book_set, можно использовать books для обращения ко всем книгам автора. Таким образом, related_name используется для создания более осмысленного и удобного имени для обратной связи между моделями.

На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.

В заключение хотелось бы подчеркнуть, что использование related_name повышает читаемость и понимание кода, что особенно важно в больших и сложных проектах.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий