2017-02-11 3 views
0

Ich bin mit Migrationen in Django stecken. Ich habe zwei wirklich grundlegende Modelle, die nicht migrieren werden:Django Migrationen gemischt mit 'PROTECT' und '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() 

Es wird die folgende Ausnahme auslösen. Ich verstehe nicht, warum es nach einem Feld namens PROTECT sucht. Früher habe ich models.PROTECT in früheren Migrationen, bevor zu CASCADE Schalten, aber nicht mehr ...

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' 

Antwort

0

Hier ist der Deal: Ich habe einige frühere Migrationen vermasselt, die den Prozess wurden blockiert, weil Djangos Migrate nutzt alle unaplied Migrationen.

Ich musste in den Ordner \\ Migrationen gehen und alle Dateien löschen (außer init .py natürlich).

Alles funktioniert jetzt wie ein Charme.

Wenn dies in der Produktion passiert, würden Sie wahrscheinlich nur die Migrationen auf den Punkt der letzten funktionierenden Migration löschen ...