Обновление столбцов и таблиц базы данных с помощью Django

Я столкнулся с ситуацией, когда я пытаюсь обновить базу данных mysql с помощью django. вот ее схема: исходная схема

class Departments(models.Model):
    DepartmentId = models.AutoField(primary_key=True)
    DepartmentName = models.CharField(max_length=100)

class Groups(models.Model):
    GroupId = models.AutoField(primary_key=True)
    GroupName = models.CharField(max_length=100)

class Employees(models.Model):
    EmployeeID = models.AutoField(primary_key=True)
    EmployeeName = models.CharField(max_length=100)
    Departments = models.CharField(max_length=100)
    Groups = models.CharField(max_length=100)
    DateOfRecruitment = models.DateField()
    Position = models.CharField(max_length=100)
    PhotoFileName = models.CharField(max_length=100)

новая схема

class Departments(models.Model):
    DepartmentId = models.AutoField(primary_key=True)
    DepartmentName = models.CharField(max_length=100)

class Groups(models.Model):
    GroupId = models.AutoField(primary_key=True)
    GroupName = models.CharField(max_length=100)

class Positions(models.Model):
    PositionId = models.AutoField(primary_key=True)
    PositionName = models.CharField(max_length=100)

class Employees(models.Model):
    EmployeeID = models.AutoField(primary_key=True)
    EmployeeName = models.CharField(max_length=100)
    Departments = models.CharField(max_length=100)
    Groups = models.CharField(max_length=100)
    DateOfRecruitment = models.DateField()
    DateOfResignation = models.DateField()
    Position = models.CharField(max_length=100)
    Blacklist = models.BooleanField()
    BlacklistDate = models.DateField()
    PhotoFileName = models.CharField(max_length=100)

Я пытался использовать следующую команду

python manage.py makemigrations someapp
python manage.py migrate

Однако он не обновляется в самой системе mysql. Единственное решение, к которому я пришел, это сброс всей базы данных и повторная миграция. Я надеюсь, что есть лучшее решение, чем мой метод, поскольку я не могу просто использовать тот же метод для миграции данных или другого обновления таблицы. Спасибо.

Вы должны использовать makemigrations каждый раз, когда вы делаете даже небольшое изменение в полях модели:

python manage.py makemigrations   # you don't have to use that: someapp

В любом приложении, которое имеет хотя бы одно отличие, нужно создать несколько файлов в папке 'migrations'. Только после этого вторая команда внесет изменения в базу данных:

python manage.py migrate

Полагая по комментариям под вопросом, вы, вероятно, не добавили свое приложение в INSTALLED_APPS, поэтому makemigrations не обнаруживает изменений.

Вернуться на верх