Обновление столбцов и таблиц базы данных с помощью 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
не обнаруживает изменений.