Освойте 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
повышает читаемость и понимание кода, что особенно важно в больших и сложных проектах.
Добавить комментарий