2 Stimmen

django-south - Richtiger Weg zum Downgrade von Abhängigkeiten?

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:

  1. Fügen Sie die TreeForeignKey Klasse zu meiner django-mptt-Installation hinzugefügt.
  2. Ä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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X