我对django的迁移感到困惑。我有两个不会迁移的基本模型:
from django.db import models
# Create your models here.
class Instanz(models.Model):
type = models.CharField(max_length=30)
angelegt_am = models.DateField(auto_now_add=True)
class Person(models.Model):
instanz_fk = models.ForeignKey('Instanz', on_delete=models.CASCADE)
last_name = models.CharField(max_length=30)
first_name = models.CharField(max_length=30)
geburtsdatum = models.DateField()
它会引发以下异常。我不明白为什么它会搜索名为PROTECT的字段。在切换到CASCADE之前,我在之前的迁移中使用了models.PROTECT,但不再使用...
Operations to perform:
Apply all migrations: admin, auth, contenttypes, kundencenter, sessions
Running migrations:
Applying kundencenter.0001_initial...Traceback (most recent call last):
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\models\options.py", line 617, in get_field
return self.fields_map[field_name]
KeyError: 'PROTECT'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool\manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\core\management\__init__.py", line 367, in execute_from_command_line
utility.execute()
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\core\management\__init__.py", line 359, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\core\management\base.py", line 294, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\core\management\base.py", line 345, in execute
output = self.handle(*args, **options)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\core\management\commands\migrate.py", line 204, in handle
fake_initial=fake_initial,
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\migrations\executor.py", line 115, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\migrations\executor.py", line 145, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\migrations\executor.py", line 244, in apply_migration
state = migration.apply(state, schema_editor)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\migrations\migration.py", line 129, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\migrations\operations\models.py", line 96, in database_forwards
schema_editor.create_model(model)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\backends\base\schema.py", line 246, in create_model
definition, extra_params = self.column_sql(model, field)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\backends\base\schema.py", line 136, in column_sql
db_params = field.db_parameters(connection=self.connection)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\models\fields\related.py", line 940, in db_parameters
return {"type": self.db_type(connection), "check": self.db_check(connection)}
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\models\fields\related.py", line 937, in db_type
return self.target_field.rel_db_type(connection=connection)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\models\fields\related.py", line 855, in target_field
return self.foreign_related_fields[0]
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\models\fields\related.py", line 595, in foreign_related_fields
return tuple(rhs_field for lhs_field, rhs_field in self.related_fields if rhs_field)
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\models\fields\related.py", line 582, in related_fields
self._related_fields = self.resolve_related_fields()
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\models\fields\related.py", line 575, in resolve_related_fields
else self.remote_field.model._meta.get_field(to_field_name))
File "C:\Users\Micha\Dropbox\PycharmProjects\vertriebstool_virtualenv\lib\site-packages\django\db\models\options.py", line 619, in get_field
raise FieldDoesNotExist('%s has no field named %r' % (self.object_name, field_name))
django.core.exceptions.FieldDoesNotExist: Instanz has no field named 'PROTECT'
答案 0 :(得分:0)
这是交易:我搞砸了一些阻止该过程的早期迁移,因为Djangos迁移使用了所有未迁移的迁移。
我必须转到文件夹\\ migrations并删除所有文件(当然除了 init .py)。
现在一切都像魅力一样。
如果在生产中发生这种情况,您可能只会将迁移删除到上次工作迁移的位置......