Достаем данные из БД
В этой статье мы предполагаем, что вы уже знаете о моделях данных и как описываются их поля. О моделях можно узнать в статье Модели и поля.
В этой статье мы работаем с моделью данных для блога. Если бы мы хранили данные в таблице Excel, она бы выглядела так:
А для Django ORM эта таблица описывается так:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField()
published_date = models.DateTimeField()
Эта модель называется Post
и у неё есть 4 поля:
title
— заголовок поста, строка до 200 сиволовtext
— текст поста, строка произвольной длиныcreated_date
— дата и время создания поста, объектdatetime
published_date
— дата и время публикации поста, объектdatetime
Достать все
Чтобы достать все данные о постах, нам понадобится objects.all()
:
posts = Post.objects.all()
print(posts)
Вы увидите что-то такое:
<QuerySet [<Post: Post object>, <Post: Post object>, <Post: Post object>]>
Это 3 поста из базы данных. Как вы могли заметить, они лежат не в списке, а в QuerySet
. Пока не будем вдаваться в подробности что это такое, главное, что им можно пользоваться как списком.
<Post: Post object>
— объект поста из базы данных. У него есть заголовок, текст, даты создания и публикации… Всё то, что мы указывали у модели.
Давайте получим первый пост:
print(posts[0])
# <Post: Post object>
Довольно просто. Обратились по индексу, как будто это список — получили первый пост.
Достать данные из объекта
Как достать заголовок, текст и т. д. из <Post: Post object>
? Укажем поле, данные из которого хотим получить:
some_post = posts[0]
print(some_post.title)
Заголовок хранится в поле title
, вот его мы и указали. Вот что выведется в консоль:
Испытания дрейфующего стратостата. Запуск Рогозина и LoRa в стратосферу
А вот так можно вывести заголовки всех постов:
for post in posts:
print(post.title)
Вот что выведется:
Испытания дрейфующего стратостата. Запуск Рогозина и LoRa в стратосферу
Telegram. Безлимитный сетевой диск. Бесплатный
13 самых заминусованных статей минувшего года
Почему ['1', '7', '11'].map(parseInt) возвращает [1, NaN, 3] в Javascript?
...
Что читать дальше
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.