Клонированный проект Django не дает таблиц после миграции
Я клонировал проект, который хочу изменить и поэкспериментировать с ним, и у меня есть все необходимые учетные данные. Однако, выполняя шаги, описанные в файле ReadMe.md, я столкнулся с проблемами:
Клонируйте проект.
Создайте файл
.env
и добавьте в него следующую информацию:Переменные базы данных:
DATABASE_NAME
: Имя базы данныхDATABASE_USER
: Пользователь базы данныхDATABASE_PASSWORD
: Пароль базы данныхDATABASE_HOST
: Хост базы данныхDATABASE_PORT
: Порт базы данных
Переменные аутентификации для Telnyx API:
Telnyx_v2_key
: Telnyx API v2 keyx-api-token
: Telnyx API v1 tokenx-api-user
: Электронная почта пользователя Telnyx API v2
Создайте виртуальную среду:
python -m venv ./venv
Активируйте среду:
source venv_telnyx-invoicing/bin/activate.csh
Установите требования:
pip install -r requirements.txt
Создайте каталог журналов:
mkdir logs
Создайте миграции:
python manage.py makemigrations
Мигрировать:
python manage.py migrate
В настоящее время я застрял на этапе миграции. Когда я пытаюсь запустить python manage.py makemigrations
, я получаю следующую ошибку:
Traceback (most recent call last):
File "C:\Users\DominykasPavlijus\Desktop\Telnyx-Invoicing-1\venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
psycopg2.errors.UndefinedTable: relation "Project_tenant" does not exist
LINE 1: ...nant"."id", "Project_tenant"."billing_group" FROM "Project_t...
Мой файл settings.py
, похоже, настроен правильно:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.getenv('DATABASE_NAME'),
'USER': os.getenv('DATABASE_USER'),
'PASSWORD': os.getenv('DATABASE_PASSWORD'),
'HOST': os.getenv('DATABASE_HOST'),
'PORT': os.getenv('DATABASE_PORT'),
}
}
Вот модель, которая вызывает проблему:
from django.db import models
from cgi import print_exception
from enum import unique
from unicodedata import name
class Tenant(models.Model):
billing_group = models.CharField(max_length=200)
def __str__(self):
return str(self.billing_group)
Я пытался просмотреть руководства, но ничего не показалось правильным, makemigrations
не создает таблицы в моей базе данных, дайте мне знать, если я что-то упускаю при первом клонировании, может быть, шаг или что-то еще?
В этом проекте нет никаких файлов или папок миграции, и вот как выглядит моя папка проекта:
Единственный способ, при котором миграции работают без ошибок, я имею в виду, это если я получу резервную копию производства и загружу ее в мой pgadmin....
попробуйте с этим туто:)
Необходимые условия Команда py должна указывать на python3
py -V
3.10.0
postgresql 16+ должен быть запущен на вашей машине с помощью pg_ctl status (Windows), или pgrep -l postgres (Mac), или sudo systemctl status postgresql (Linux)
Git
Создайте новую папку mkdir ваш проект && cd ваш проект Добавьте .gitignore и запустите git Добавьте следующий .gitignore
.venv *.sqlite3 pycache. Добавьте папку в git git init git add . && git commit -m «first commit» Создайте виртуальное окружение для Python и активируйте его py -m venv .venv source .venv/bin/activate Установите django и драйвер pg py -m pip install django psycopg2-binary Соберите скелет django Ниже «core» означает ядро нашего приложения, «.» означает сборку скелета внутри текущей папки :
django-admin startproject core . git add . && git commit -m «django first files»
Change settings.py
Внутри файла settings.py добавьте localhost в список разрешенных хостов, вот так :
ALLOWED_HOSTS = ['localhost', '127.0.0.1']
And database settings like this :
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'webplus',
'USER': 'webplususer',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
}
ОБНОВЛЕНИЕ: Пройдя все руководства и собрав информацию, я обнаружил, что единственный способ работать без ошибок - это выполнить следующие шаги:
Пошаговое описание того, что я сделал:
В git bash я заполнил эти команды, чтобы во всех папках была папка migrations с файлом init.py в ней:
mkdir -p callrates/migrations &&
mkdir -p phoneNumbers/migrations && touch phoneNumbers/migrations/init.py
mkdir -p Project/migrations && touch Project/migrations/init.py
mkdir -p reports/migrations && touch reports/migrations/init.py
mkdir -p users/migrations && touch users/migrations/init.py
2. Затем я сделал миграции, пропуская проверки, что в итоге дало мне таблицы.
python manage.py makemigrations --skip-checks
python manage.py migrate --skip-checks
3. После этого я сделал фальшивую миграцию
python manage.py migrate --fake
4. И после этого, чтобы убедиться, я выполнил миграцию следующим образом:
python manage.py makemigrations
python manage.py migrate
Я понимаю, что таблицы изначально были пустыми, что, вероятно, не было идеальным решением, но для меня это сработало. Позже я импортировал данные в каждую таблицу, и теперь все работает так, как ожидалось.