Ich baue eine Anwendung mit django, und mit django-Süd für die Datenbank-Schema-Migrationen. Ich verwende django-mptt um ein Kommentarsystem zu erstellen, und ich installierte 0.5-pre (den aktuellen Git-Master-Zweig).
Die Version, die ich verwende, hat ein django-Feld namens TreeForeignKey
, aber ich versuche zu testen, ob 0.5 einen Fehler hat, der in 0.4 existiert, also habe ich meine Version von django-mptt entfernt und die aktuelle Version aus dem Cheeseshop installiert. Ich habe meinen Code geändert und verwende ForeignKey
statt TreeForeignKey
.
Wenn es an der Zeit ist, Migrationen durchzuführen, bricht es offensichtlich mit dieser Nachricht:
ValueError: Cannot import the required field 'mptt.fields.TreeForeignKey'
Alle meine Migrationsdateien verweisen auf mptt.fields.TreeForeignKey
die in django-mptt 0.4 nicht existiert.
Meine Comment
Modell in django-mptt 0.5:
from mptt.models import MPTTModel
from mptt.fields import TreeForeignKey
class Comment(MPTTModel):
# ...
parent = TreeForeignKey('self', related_name='children', blank=True, null=True)
Das gleiche Modell, nachdem ich auf django-mptt 0.4 heruntergestuft habe
import django.db.models
from mptt.models import MPTTModel
class Comment(MPTTModel):
# ... cruft
# TreeForeignKey does not exist in mptt 0.5!
parent = models.ForeignKey('self', related_name='children', blank=True, null=True)
Es gibt zwei ziemlich hacky Ansätze, die ich mir ausgedacht habe, um dies zu beheben und die Migration zu ermöglichen:
- Fügen Sie die
TreeForeignKey
Klasse zu meiner django-mptt-Installation hinzugefügt. - Ändern Sie meine Migrationsdateien, um die Verweise auf
mptt.fields.TreeForeignKey
.
Ich habe den ersten Ansatz gewählt, und es hat funktioniert, aber ich habe das Gefühl, dass es eine Art Hack ist (aber nicht so sehr wie die zweite Option).
Gibt es eine nicht-hacky Weg zu tun, was ich mit Herabstufung von Abhängigkeiten, die in einigen Feldern in meinen Modellen ändern führte tat?