Ich habe ein Django-Modell, das einen Fremdschlüssel auf ein anderes Modell hat:Django 1.9 Drop Fremdschlüssel in der Migration
class Example(models.Model)
something = models.ForeignKey(SomeModel, db_index=True)
ich die zugrunde liegende DB-Säule als ein Feld halten will, aber die ausländischen loszuwerden Schlüsseleinschränkung in der Datenbank.
Also das Modell ändern:
class Example(models.Model):
something_id = models.IntegerField()
Und klar zu sein, something_id
ist die Spalte, die Django für das Fremdschlüsselfeld geschaffen hatte.
Ich möchte die Spalte nicht löschen und neu erstellen (das ist es, was Django macht, wenn ich Migrationen automatisch erzeuge, nachdem ich das Modell wie oben geändert habe).
Ich möchte das Feld aber behalten Ich möchte die Fremdschlüsseleinschränkung in der Datenbank mit einer Migration entfernen. Es ist mir nicht klar, wie man das mit einer Django-Migration macht - gibt es eine eingebaute Unterstützung dafür oder muss ich etwas Roh-SQL ausführen und, wenn ja, wie bekomme ich programmatisch den Namen der Beschränkung?
Ich habe das auch ausprobiert und gearbeitet. Das Problem ist, wenn ich danach eine neue Migration durchführen muss, wird die Statusänderung nicht erkannt und funktioniert nur basierend auf dem Datenbankschema. Hast du das auch gekreuzt? –