Сам вопрос: обязательно всегда выполнять makemigrations и далее делать migrate?
Да, начиная, насколько я помню, с версии 1.7 в Django таблицы создаются именно так.
python manage.py makemigrations <app_name>
python manage.py migrate <app_name>
Т.е у приложения уже есть другие таблицы, и при вызове migrate он ругается.
django.db.utils.ProgrammingError: relation "таблица" already exists
Перед внесением изменений в модель сделайте makemigrations и migrate --fake. Потом внесите изменения в модель, снова makemigrations и migrate, уже без флага --fake. Таблица будет изменена.