Манипуляция с данными в Django на основе CRUD
Аббревиатура CRUD обозначает четыре основные операции, которые используются при работе с базами данных. Этот термин представляет собой сочетание первых букв английских слов: создание (Create), чтение (Read), модификация (Update) и удаление (Delete). Это, по своей сути, стандартная классификация функций для манипуляций с данными.
В SQL этим функциям соответствуют операторы: Insert(создание записей), Select(чтение записей), Update(редактирование записей) и Delete(удаление записей).
В Django при создании моделей данных они наследуют свое поведение от класса django.db.models.Model, который предоставляет базовые операции с данными (добавление, чтение, обновление и удаление).
Рассмотрим выполнение этих операций с данными на примере модели Post, которая была создана в проекте Course_SecondProject:
from django.db import models
class Post(models.Model):
text = models.TextField()
def __str__(self):
return self.text[:50]
Зайдем в наш проект, и в терминале введем:
python manage.py shell
И далее все команды будем выполнять в этом шелле. Первым делом нам нужно импортировать туда нашу модель:
from posts.models import Post
Теперь можно продолжать выполнять команды. Мы можем посмотреть нашу таблицу через SQLiteStudio, или если мы работаем в PyCharm Professional то можем легко посмотреть содержимое нашей таблицы. На данный момент у нас одна запись в БД.
Все запросы мы будем выполнять используя менеджер по умолчанию (objects). Добавление кастомных менеджеров мы рассмотрим на примере блога, далее по курсу.
Добавление данных в БД
В Django для добавления данных в БД можно использовать следующие методы:
create()save()get_or_create()
Для добавления данных методом create() для нашей модели можно использовать следующий код:
second_post = Post.objects.create(text='Мой второй текст в БД')
Проверим БД.
Теперь second_post содержит объект модели Post, и мы можем обращаться к его полям:
>>> second_post
<Post: Мой второй текст в БД>
>>> type(second_post)
<class 'posts.models.Post'>
>>> second_post.id
2
>>> second_post.text
'Мой второй текст в БД'
Однако, в своей сути, метод create использует другой метод - save, и его мы также можем использовать самостоятельно для добавления объекта в БД:
>>> third_post = Post(text='Моя третья запись в БД')
>>> third_post.save()
После успешного добавления данных в БД можно аналогично получить идентификатор добавленной записи - через third_post.id и сами добавленные значения - через third_post.text .
Также существует метод get_or_create(), он сначала ищет объект с заданными параметрами и создает его, если он не найден. О нем мы поговорим в следующих разделах.