Django迁移混合了“保护”和“级联”

2024-06-16 10:25:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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的字段。我曾经模型.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'

Tags: djangoinpydbvirtualenvmodelslibline
1条回答
网友
1楼 · 发布于 2024-06-16 10:25:02

这里的交易:我搞砸了一些早期的迁移,阻碍了进程,因为Djangos migrate使用所有未应用的迁移。你知道吗

我不得不转到文件夹\\migrations并删除所有文件(当然除了init.py)。你知道吗

现在一切都很顺利。你知道吗

如果在生产中发生这种情况,您可能只会删除到上一次工作迁移点的迁移。。。你知道吗

相关问题 更多 >