Django. База данных и модели ( часть 6)

Реляционные базы данных

Django прекрасно работает и с MySQL, PostgreSQL, SQLite, Oracle — все это реляционные базы данных.

Реляционные — это значит relational, relation — отношения, в нашем случае отношения между таблицами в нашем случае.

В прошлом уроке мы создали простое Django приложение “houses” и подключили его к проекту. А сейчас начнем его настраивать и начнем с файла models.py, в котором мы определим структуру данных приложения.

models.py — отвечает за описание нашей будущей базы данных

Внутри его, создаем класс House унаследованный от models.Model

В терминах Django класс House называется моделью и модель House отвечает за конкретный дом, который мы будем продавать клиенту.

Начинаем заполнять нашу таблицу. Таблицы в ORM оформляются в виде классов.

class House(models.Model):
      pass

Наши дома имеют определенные характеристики вроде:

  • Цены
  • Площади
  • Материала изготовления

Эти характеристики задаются внутри модели и называются полями модели
(переменные — колонки базы данных)

Создадим заголовок, первую колонку
name = models.CharField(«название», max_length=200)
# CharField — подразумевает собой набор символов
# max_length=200 — максимальная длина символов в строке

Создадим еще одно поле price, во вторую колонку
price = models.IntegerField(«цена»)
# IntegerField — может принимать и хранить целые числа
# “цена” — русское название поля price

Добавим еще одно поле description типа TextField в третью колонку
# TextField — в отличии от CharField, может хранить тексты произвольной длинны (для больших массивов текстовой информации) и его не нужно ограничивать параметром max_lenght
descriptions = models.TextField(“описание”)

Дополнительно
# models.DateTimeField — используется для хранения даты публикации статьи, это формат хранения как времени так и даты
# models.DateField — хранит только дату
# models.IntegerField — хранит цифровые целочисленные значения

class Meta — включает в себя дополнительные свойства для нашей будущей таблицы.

Нас интересует название таблицы, мы не хотим, чтобы Django самостоятельно давал название нашей таблицы, по-этому мы описываем это в классе Meta. Его нужно поместить во внутрь класса House (sites -> dom_u_morya -> houses)

файл models.py

сlass House(models.Model):
      class Meta():
            db_table = «new_houses»

Более современные требования требует дополнительных параметров

class House(models.Model):
      house_name = models.CharField(«Название», max_length=200, default=«»)
      house_price = models.IntegerField(«Цена», default=0)
      house_description = models.TextField(«Описание», default=«»)

И так в нашей модели House есть три поля, которые описывают его структуру


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