Back to questions
Junior — Middle
67
Каким образом можно получить доступ к связанным моделям или полям через ORM Django?
Answer from AI
sobes.tech AI
В Django ORM доступ к связанным моделям осуществляется через поля связей, такие как ForeignKey, OneToOneField и ManyToManyField.
- Для доступа к связанному объекту через ForeignKey или OneToOneField используется атрибут с именем поля:
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
book = Book.objects.get(id=1)
author = book.author # доступ к связанному объекту Author
- Для обратного доступа (от родительской модели к связанным объектам) используется атрибут с суффиксом
_setпо умолчанию илиrelated_name, если он задан:
author = Author.objects.get(id=1)
books = author.book_set.all() # все книги автора
- Для ManyToManyField доступ к связанным объектам также через атрибут поля:
class Student(models.Model):
name = models.CharField(max_length=100)
class Course(models.Model):
students = models.ManyToManyField(Student)
course = Course.objects.get(id=1)
students = course.students.all() # все студенты курса
Таким образом, доступ к связанным моделям в Django ORM осуществляется через атрибуты, соответствующие полям связи, и методы QuerySet для работы с множественными связями.