В Django makemigrations — команда, которой формируется база данных с которой будет работать приложение. Структура базы задается в Python скрипте.
Django makemigrations — формирование базы в Django
За счёт makemigrations при использовании фреймворка не нужно заходить в Postgres или в MySQL и создавать таблицы. Структура формируется автоматически без написания SQL запросов врунчую.
Это значительно упрощает разработку и является одним из плюсов Django. Наполнение базы может выполняться уже в процессе работы веб-приложения. В django-admin или пользователями при взаимодействии с сайтом.
Тип базы данных и реквизиты подключения к ней задаются в файле settings.py проекта.

По умолчанию Django использует sqlite — базу данных в одном файле. Её достаточно для небольших проектов.
sqlite база находится обычно в каталоге приложения на одном уровне со скриптом manage.py

Когда разрабатывается приложение рассчитанное на большое количество посетителей больше подходят MySQL и Postgresql. Тип базы данных и реквизиты доступа к ней указываются в одном скрипте.
За счёт миграций структура базы определенная в коде попадает в БД.
Структура определяется в models.py
mcedit my_site/models.py
Ниже пример синтаксиса для создания трех таблиц. В Python скрипте обозначены типы данных для содержимого и связи, представленные ForeignKey.
from django.db import models
class Table1(models.Model):
top_name = models.CharField(max_length=264,unique=True)
def __str__(self):
return self.top_name
class Table2(models.Model):
topic = models.ForeignKey(Table2,on_delete=models.DO_NOTHING,)
name = models.CharField(max_length=264,unique=True)
url = models.URLField(unique=True)
def __str__(self):
return self.name
class Table3(models.Model):
name = models.ForeignKey(Table2,on_delete=models.DO_NOTHING,)
date = models.DateField()
def __str__(self):
return str(self.date)
После внесения изменений в скрипт или при его написании изначально выполняется migrate
(test) admin@server:~/dev/test$ python manage.py migrate
Затем изменения применяются выполнением makemigrations.
(test) admin@server:~/dev/test$ python manage.py makemigrations my_site
Migrations for 'my_site':
my_site/migrations/0001_initial.py
— Create model Table1
— Create model Table2
— Create model Table3
— Add field name to Table3
С базой затем можно работать подключаясь непосредственно к Postgres/MySQL/SQLite или из из консоли Python используя модуль shell
python manage.py shell
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type «help», «copyright», «credits» or «license» for more information.
(InteractiveConsole)
>>> print ('hello')
hello
>>> from my_site.models import Table1
Например можно вывести все содержимое, аналог запроса SELECT * в SQL.
> print (Table1.objects.all())
<QuerySet []>
Читайте о том как подключиться к базе Postgres, а также про виртуальное окружение.
Виртуальное окружение Python используется для изоляции приложений и установки для каждого индивидуально своих зависимостей.
