Sobes.tech
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 для работы с множественными связями.