Хотя пара похожих вопросов была опубликована, ни один из этих вопросов не совпадает с моим делом.
У меня была модель, которая выглядела так:
class Person(models.Model):
"""Definition of persons that will fulfill a role in a committee
or will be in a way associated with a committee as an administrator
"""
ClientId = models.ForeignKey('clients.Client', on_delete=models.CASCADE,
to_field='id')
PersNumber = models.PositiveIntegerField(null=False)
PersSurName = models.CharField(max_length=40, null=False)
PersNames = models.CharField(max_length=40, null=False)
Я установил уникальность записи в ClientId и PersNumber.
Я создал 3 записи в базе данных.
Попутно я убедился, что с таким же успехом могу использовать автоматически сгенерированный идентификатор записи в качестве номера человека (я учу Джанго).
Я удалил PersNumber из моей модели и запустил makemigrations.
Все хорошо, пока я не побежал мигрировать ...
Я получаю следующую ошибку:
django.core.exceptions.FieldDoesNotExist: Person has no field named 'PersNumber'
Любая идея о том, как обойти эту ошибку
Полный след выглядит так:
Operations to perform:
Применение всех миграций: администратор, аутентификация, клиенты, типы контента, komadm_conf, сеансы
Запущенные миграции:
Применение komadm_conf.0017_auto_20180830_1806 ... обратная связь (последний вызов был последним):
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ models \ options.py", строка 564, в поле get_field
вернуть self.fields_map [field_name]
KeyError: 'PersNumber'
Во время обработки вышеуказанного исключения произошло другое исключение:
Traceback (последний вызов был последним):
Файл "manage.py", строка 15, в
execute_from_command_line (sys.argv)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ core \ management__init __. Py", строка 381, в execute_from_command_line
utility.execute ()
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ core \ management__init __. Py", строка 375, в строке выполнения
self.fetch_command (субкоманда) .run_from_argv (self.argv)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ core \ management \ base.py", строка 316, в run_from_argv
self.execute (* args, ** cmd_options)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ core \ management \ base.py", строка 353, в исполнении
output = self.handle (* аргументы, ** параметры)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ core \ management \ base.py", строка 83, в оболочке
res = handle_func (* args, ** kwargs)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ core \ management \ команды \ migrate.py", строка 203, в дескрипторе
fake_initial = fake_initial,
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ migrations \ executor.py", строка 117, в миграции
state = self._migrate_all_forwards (состояние, план, full_plan, fake = fake, fake_initial = fake_initial)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ migrations \ executor.py", строка 147, в _migrate_all_forwards
state = self.apply_migration (состояние, миграция, фальшивка = фальшивка, fake_initial = fake_initial)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ migrations \ executor.py", строка 244, в apply_migration
состояние = миграция.apply (состояние, schema_editor)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ migrations \igration.py", строка 124, в приложении
operation.database_forwards (self.app_label, schema_editor, old_state, project_state)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ migrations \ operations \ fields.py", строка 150, в database_forwards
schema_editor.remove_field (from_model, from_model._meta.get_field (self.name))Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ backends \ sqlite3 \ schema.py", строка 318, в поле remove_field
self._remake_table (модель, delete_field = поле)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ backends \ sqlite3 \ schema.py", строка 257, в _remake_table
self.create_model (temp_model)
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ backends \ base \ schema.py", строка 300, в create_model
columns = [model._meta.get_field (field) .column для поля в полях]
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ backends \ base \ schema.py", строка 300, в
columns = [model._meta.get_field (field) .column для поля в полях]
Файл "C: \ ApplicationDef \ za \ co \ drie_p \ Komadmin.db \ KomAdmin \ KomadmTest \ komadm_app \ komadm_env \ lib \ site-packages \ django \ db \ models \ options.py", строка 566, в поле get_field
поднять FieldDoesNotExist («% s не имеет поля с именем«% s »»% (self.object_name, field_name))
django.core.exceptions.FieldDoesNotExist: у человека нет поля с именем 'PersNumber'