Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

2.1 Структура и поля моделей, создание проекта
5 из 5 шагов пройдено

Запустите shell_plus команду с --print-sql параметром:

python manage.py shell_plus --print-sql

И попробуем выполнить некоторые команды. 

Создание данных

Сначала создайте новый Employee объект и вызовите метод save() для вставки новой строки в таблицу:

e = Employee(first_name='John', last_name='Connor')
e.save()

В этом примере Django использует INSERT оператор для вставки новой строки в hr_employee таблицу.

Добавим второго сотрудника с именем Sarah и фамилией Connor:

e = Employee(first_name='Sarah', last_name='Connor')
e.save()

Теперь у нас есть две строки в hr_employee таблице.

Выбор данных

Чтобы выбрать все строки из hr_employees таблицы, вы используете all() такой метод:

Employee.objects.all()

Как это работает.

  • Во-первых, Django использует SELECT оператор для выбора строк из hr_employee таблицы.
  • Во-вторых, Django преобразует строки в Employee объекты и возвращает QuerySet, содержащий Employee объекты.

Обратите внимание, что LIMIT Django добавляет 21 запись для отображения в оболочке.

Чтобы выбрать одну строку по идентификатору, вы можете использовать get() метод. Например, следующее возвращает сотрудника с идентификатором 1:

e = Employee.objects.get(id=1)

В отличие от all() метода, get() метод возвращает Employee объект вместо QuerySet.

Чтобы найти сотрудников по имени, можно использовать filter() метод объекта QuerySet. Например, следующее находит сотрудников по имени John:

Employee.objects.filter(first_name='John')

Обновление данных

Сначала выберите сотрудника с идентификатором 2:

e = Employee.objects.get(id=2)

Обновите фамилию выбранного сотрудника на Smith:

e.last_name = 'Smith'
e.save()

Удаление данных

Чтобы удалить экземпляр модели, вы используете delete() метод. В следующем примере удаляется сотрудник с идентификатором 2, так как в прошлом абзаце мы его выбрали:

e.delete()

Чтобы удалить все экземпляры модели, вы используете all() метод для выбора всех сотрудников и вызываете delete() метод для удаления всех выбранных сотрудников:

Employee.objects.all().delete()

Django использует DELETE оператор без предложения WHERE, чтобы удалить все строки из hr_employee таблицы.

 

Краткое содержание

  • Django ORM позволяет вам взаимодействовать с реляционными базами данных с помощью Python.
  • Используйте all() метод, чтобы получить все строки из таблицы.
  • Используйте get() метод для выбора строки по идентификатору.
  • Используйте filter() метод для фильтрации строк по одному или нескольким полям.
  • Используйте save() метод для создания новой строки или обновления существующей строки.
  • Используйте delete() метод для удаления одной или нескольких строк из таблицы.

  • Комментария
Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

На предыдущем уроке мы при создании модели для поля 'id' мы использовали UUID, а сейчас 'id' почему то равен 1 и 2. Декларируем, что добавляем второго сотрудника с именем Jane и фамилией Doe,а делаем  e = Employee(first_name='Sarah',last_name='Connor'). Может нужно проверить содержание уроков?

Изменен Владимир Бунин

@Владимир_Бунин, В прошлом уроке, в самом начале лекции было написано: 

Внимание! В данном шаге мы лишь рассмотрим дополнительные опции моделей Django, в наш проект мы их пока добавлять не будем.

По поводу второго сотрудника, спасибо, поправили.

@Илья_Перминов, спасибо

почему у вас отображается имя кверисета а у меня нет?

In [10]: e
Out[10]: <Employee: Employee object (2)>
 

@No_Name, добавьте метод __str__ к модели из конца прошлого шага.