В этой статье будем создавать базу данных для нашего проекта. В 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
было интересно ;) Спасибо!
И Вам спасибо!)
Когда ожидать запуск проекта?
Дата, к сожалению, не известна. Надо стараться максимально разобрать все подводные камни. Спасибо, что читаете и ждёте).
Возможно, правильнее будет написать что таблица в базе данных представлена в виде класса, который наследуется от класса models.Model.
Думаю, стоило бы пояснить, что этот метод нужен для получения строкового представления объекта. В данном случае этот объект - запись в таблице в БД.
Спасибо за замечания) Будем исправляться!)
@vp-webdev, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующей категории:
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
litrbooh, littleboo, ianboil, vas, mishka, ukrainian, neo, mir, max-max, oleg257, urii, galina1, dimarss, vik, shuler, brovaryleaks, vadbars, arsar, vasilisapor2, gromozeka, tnam0rken, karusel1, arystarch, exan, acidgarry, newodin, vika-teplo, rickytrane, myhardmoney, prost, sareon, mr-nikola, kertar, lokkie, bag, ieshua, vealis, alessandarus, xsen, anr, kr-alexey, sansey, alexko, funt33
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас на странице https://golos.io/~witnesses, вот так: