私はdjangoを使用してアプリケーションを構築しており、データベーススキーマの移行にはdjango-southを使用しています。私はdjango-mpttを使ってコメントシステムを構築していますが、私は0.5-pre(現在のgitマスターブランチ)をインストールしました。django-south - 依存関係をダウングレードする適切な方法は?
私が使用しているバージョンにはTreeForeignKey
というdjangoフィールドがありますが、0.5には0.4に存在するバグがあるかどうかをテストしようとしていますので、私のバージョンのdjango-mpttを削除し、チーズソープから解放される。 TreeForeignKey
ではなくForeignKey
を使用するようにコードを変更しました。それは移行を行うには時間が来ると、それは明らかにこのメッセージを破る
:
ValueError: Cannot import the required field 'mptt.fields.TreeForeignKey'
すべての私の移行ファイルには、ジャンゴ・MPTT 0.4に存在しませんmptt.fields.TreeForeignKey
を参照します。ジャンゴ・MPTT 0.5で
マイComment
モデル:
from mptt.models import MPTTModel
from mptt.fields import TreeForeignKey
class Comment(MPTTModel):
# ...
parent = TreeForeignKey('self', related_name='children', blank=True, null=True)
私はジャンゴ・MPTTする修正する私が思い付いた2つのむしろハックのアプローチがあります0.4
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)
ダウングレードした後、同じモデルこれは移行を許可します:
- 私のdjango-mptに
TreeForeignKey
クラスを追加してくださいインストールします。 - 移行ファイルを変更して
mptt.fields.TreeForeignKey
への参照を削除してください。
私は最初のアプローチをとりましたが、うまく機能しましたが、ハックのような感じです(しかし、2番目のオプションほどではありません)。
私のモデルでいくつかのフィールドが変更された依存関係のダウングレードを行ったことは、ハッピーではありませんか?
ええ、南のものは少し直交していましたが、モデルが変更され、移行が不足していたために壊れてしまいました。私の小さな実験はバージョンの変更に起因するものではありませんでしたが、私はdjango-mptt github-masterバージョンに戻しました。ありがとう! – birryree
全く同じ問題があり、2番目の方法を使用して解決しました。mptt.fields.TreeForeignKeyのすべての文字列をdjango.db.models.fields.related.ForeignKeyに置き換えました。 – silentser