РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pydjPmMROTOD 145 of 187 menu

Получение данных один к одному в Django

В предыдущем уроке мы связали посты и миниатюры через OneToOneField. Напомним структуру таблиц:

posts

  • id
  • title

thumbnails

  • id
  • path
  • alt
  • post_id

Давайте получим пост с id равным 1:

from main.models import Post post = Post.objects.get(id=1) print(post.title)

У объекта поста появится свойство thumbnail. Имя этого свойства Django берет из имени связанной модели в нижнем регистре. Это свойство содержит объект миниатюры:

post = Post.objects.get(id=1) print(post.thumbnail)

Давайте выведем поля миниатюры:

post = Post.objects.get(id=1) print(post.thumbnail.path) print(post.thumbnail.alt)

С обратной стороны тоже можно пройти по связи. У миниатюры есть свойство post - это имя поля OneToOneField:

from main.models import Thumbnail thumbnail = Thumbnail.objects.get(id=1) print(thumbnail.post.title)

Можно выбрать сразу все посты и обойти их миниатюры в цикле:

posts = Post.objects.all() for post in posts: print(post.title, post.thumbnail.path)

Получите всех работников вместе с их контактами.

Получите всех работников с возрастом 25 лет вместе с их контактами.

Получите все контакты вместе с их работниками.

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить