Создание web-сервиса. Всё, но не сразу. Создание таблиц средствами Django.
В этой статье будем создавать базу данных для нашего проекта. В Django это реализовано превосходно. Сейчас разберём подробнее.
Идём в папку приложения, у нас оно называется general. И находим файл
models.py
.Здесь будем описывать нашу базу.
Импортируем библиотеку для автоматической генерации slug.
import autoslug
Импортируем Объект класса, для чего, объясню позже.
from django.db import models
Импортируем объект User. Для автоматического создания таблицы пользователей.
from django.contrib.auth.models import User
Разберём создание таблиц на примере таблицы Company. Ссылка на остальную часть чуть ниже.
Класс — это таблица и наследуется от объекта models
class Company(models.Model):
user внешний ключ по таблице User. related_name — обратная связь, чтобы мы могли обращаться от User.
user = models.ForeignKey(User, related_name='company')
Название компании, тип, как видим Char. verbose_name — это то как будет назваться в админ панеле.
name = models.CharField(max_length=300, verbose_name='Имя компании')
Столбец для ИНН. Unique = true, указывает, что оно будет уникальным.
inn = models.CharField(max_length=14, unique=True, verbose_name='ИНН')
address = models.TextField(verbose_name='Адрес')
phone = models.CharField(max_length=12, verbose_name='Телефон')
mail = models.CharField(max_length=300, verbose_name='Почта')
ImageField — показывает, что будет хранить файлы. Это поспособствует автоматическому сохранению файла на сервере. upload_to — указывает куда сохранять файл
logo = models.ImageField(upload_to='general/static/logos/')
BigIntegerField — указывает тип большое число. Default — Значение по-умолчанию.
balance = models.BigIntegerField(default=0, verbose_name='Баланс')
DateTimeField — указывает формат столбца - время
date = models.DateTimeField()
autoslug.fields.AutoSlugField указывает на создание slug автоматически.
populdate_from — по какому столбцу генерировать slug,
db_index — указываем, что это индекс таблицы, sep — указываем чем менять пробелы,
always_update — указываем обновлять ли slug.
slug = autoslug.fields.AutoSlugField(populate_from='name', db_index=True, always_update=True, sep='-', unique=True, unique_with='date')
active = models.IntegerField(default=0, verbose_name='Активность')
Методы часто возвращают что-то. Например, метод __str__
. В наше случае после вызова метода __str__()
мы получим текст (строку) с заголовком записи.
def __str__(self):
return self.name
Указываем как будет называться таблица в admin панели.
class Meta:
verbose_name = 'Компания'
verbose_name_plural = 'Компании'
Полный код на PasteBin.
Для создания таблицы необходимо выполнить две команды:
Создаём миграции
python3 manage.py makemigrations
Применяем миграцию
python3 manage.py migrate
Вот так легко создаются базы данных в Django.
Данный пост подготовлен автором @zheev. В рамках данного цикла статей он расскажет о том, что и как он программировал, какие языки и технологии использовал. С какими трудностями пришлось столкнуться и их решение на реальных примерах.
Первая часть - Вступление
Вторая часть - Проектирование БД
Третья часть - Установка окружения
Четвёртая часть - Установка и настройка Django
Пятая часть - Установка и сборка Vue