2017-02-11 95 views
0

我被Django中的迁移卡住了。我有两个真正的基本型号不会迁移:Django migrations与'PROTECT'和'CASCADE'混合在一起

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的字段。我用models.PROTECT在早期迁移,切换到CASCADE过,但是没有任何再...

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

这里的交易:我搞砸了这阻碍着过程中的一些早期的迁移,因为迁移Django的使用所有unaplied迁移。

我不得不去\\ migrations文件夹并删除所有文件(除了init .py当然)。

现在一切都像魅力一样运作。

如果在生产中发生这种情况,您可能只会删除迁移到最后一次迁移的点...