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





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