При настройке структуры моей базы данных я был настолько глуп, чтобы установить для класса Student поле «student_id» как «primary_key = True». Я понял намного позже, что есть (редкие) случаи, когда необходимо изменить сказанное «student_id». Когда вы делаете это через форму, Django автоматически дублирует ученика, чего я не хочу.Изменение поля первичного ключа в уникальное поле
Я хотел бы изменить «primary_key = True» на «unique = True», и мне интересно, как это сделать.
Мой текущий план, чтобы добавить поле под названием «идентификатор» в классе Student, применять миграции, и идти в оболочку и просто присвоить ему беговую номер с цикл:
counter = 0
for s in Student.objects.all():
counter += 1
s.id = counter
s.save()
Затем я вернусь к моим models.py и измените строку «primary_key = True» на «unique = True». Как я могу убедиться, что Django обрабатывает поле «id», как это было бы с классами без первичного ключа (т.е. автоматически присваивать новый идентификатор, когда новый студент добавляется в базу данных)?
позволяет увидеть вашу модель –
Модель довольно проста: у нее есть поле под названием «student_id» с «primary_key = True» и множество других, не очень релевантных полей - last_name, first_name, study_since и т. Д. – Tobi
Я думаю, вам понадобится переименование-> миграция-> переименование-> цикл миграции для достижения этого –