2016-03-28 16 views
0

Ich habe eine Django-App, die eine externe App-Referenz verwendet. Wir brauchen diese App-Referenz nicht mehr, daher möchten wir die Abhängigkeit entfernen. Ich bin in der Lage, die Migrationen zu generieren, um die Fremdschlüssel für Modelle in der App zu entfernen, die wir entfernen, aber ich kann die Anforderungsreferenz in der App nicht entfernen, da sie in früheren Migrationen referenziert wurde.Entfernen Sie die App-Referenz, nachdem Modellabhängigkeiten hinzugefügt wurden

Hat jemand eine bekannte Lösung zum Entfernen von App-Anforderungen wie diesem?

ein Beispiel zu liefern, sage ich eine externe App haben, die das folgende Modell hat:

class ExternalInfo(models.Model): 
    random_field = CharField() 

und in Ihrem Projektantrag haben Sie einen Kundendatensatz:

class Customer(models.Model): 
    name = CharField() 
    external_info = ForegnKey(external_app.ExternalInfo, null=True) 

Migration 0001 von Die Anwendung erstellt den Fremdschlüssel für das Modell in der externen App. 10 Monate vergehen und 10 Migrationen später müssen Sie external_info aus dem Kundenmodell entfernen und die external_app aus dem Projekt entfernen. Wie entferne ich diese Abhängigkeit, ohne ältere Migrationen zu unterbrechen?

Antwort

0

Ok, so meine Abhilfe dieses Problem die folgenden Schritte aus, um zu tun war:

  1. zu erzeugen, um die Migration Skript, das die external_info Spalte aus dem Kundenmodell
  2. entfernt den gesamten Code entfernen würde, die referenziert das Feld
  3. die 0001 Migration modifiziert, um das Fremdschlüsselfeld in ein anderes Modell zu erstellen, die
  4. entfernt, um die App von den pip Anforderungen und installierten Anwendungen
  5. vor der 0001 Migration bestanden

Wenn Sie diese Schritte ausführen, führen sowohl das Aktualisieren vorhandener Datenbanken als auch das Erstellen von Grund auf zum selben Datenbankschema. (Abgesehen davon, dass ich jetzt einen Weg finden muss, um die Tabellen loszuwerden, die die App erstellt hat, hat jeder Ideen zum besten Ansatz? Ich dachte daran, eine migrations.RunSQL zu schreiben, um die Tabellen zu löschen, aber sie werden nicht neu existieren erstellte Datenbanken)

Verwandte Themen