2016-10-09 2 views
0

Ich habe zwei Modelle in zwei verschiedenen Anwendungen:Umbenennung Modell breakes Migrationsgeschichte

# app1 models.py 
class App1Model(models.Model): 
    pass 


# app2 models.py 
from app1.models import App1Model 

class App2Model(App1Model): 
    pass 

Und ich will App1Model umbenannt und dann App2Model neu explizit OneToOneField statt Magie app1model_ptr zu haben. Also erstelle ich eine Migration, die App2Model komplett löscht (ich interessiere mich nicht für Daten, aus welchem ​​Grund auch immer), es läuft erfolgreich. Dann erstelle ich eine Migration in der ersten App, die App1Model umbenennt und es läuft auch perfekt. Ich überprüfe diese Tabelle mit einem neuen Namen und all seinen Beziehungen (und auch dazu), es ist in Ordnung.

Und dann seltsame Sache passiert: wenn ich makemigrations oder migrate auf app2 laufen bekomme ich einen Fehler

django.db.migrations.exceptions.InvalidBasesError: Cannot resolve bases for [<ModelState: 'app2.App2Model'>] 

Es schlägt fehl, während auf erste Migration von app2 (0001_initial.py in app2 Migrationen) aktuellen Projektstand zu schaffen Wo dieses Modell zum ersten Mal erstellt wurde, indem es von App1Model mit seinem alten Namen geerbt wurde. Gibt es eine Möglichkeit, dies zu beheben? Im aktuellen Zustand App2Model bereits gelöscht, App1Model umbenannt und ich kann nichts mit Migrationen auf app2 wegen dieses Problems tun.

P.S. Ich benutze 1.10.2 Django

Antwort

2

einfach gefunden Lösung:

Need letzte Migration von app2 hinzuzufügen, wo ich App2Model als Abhängigkeit der Migration von app1 gelöscht, wo ich umbenannt App1Model so wird Projektstatus in der richtigen Reihenfolge gebaut werden. Eigentlich Nachricht Fehler selbst hat etwas damit zusammenhängt, aber ich konnte den Punkt fangen:

Dies kann passieren, wenn Sie Modelle von einer App mit Migrationen ererben (z contrib.auth) in einer App ohne Migrationen; siehe https://docs.djangoproject.com/en/1.10/topics/migrations/#dependencies für mehr

ich es hier setzte mich für Zukunft und für diejenigen, die ähnliche Sache leiden.

Verwandte Themen