Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
7 лет назад

Создание 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

10
979.172 GOLOS
На Golos с August 2017
Комментарии (8)
Сортировать по:
Сначала старые