2011-09-15 7 views
4

私は新しいdjangoプロジェクトを開始しています。通常、私はインストールされているアプリに南を置きます。django-eavとsouth

それから私は、モデルの一部のフィールドを格納するEAVのいくつかの種類を必要とし、私は私が望むまさにないアプリを見つけ、それはジャンゴ・EAVである(https://github.com/mvpdev/django-eav

しかし、今、私は問題に直面しています南部はdjango-eavと一緒に働く方法を知らないので不平を言う。

! Cannot freeze field 'eav.attribute.slug' 
! (this field has class eav.fields.EavSlugField) 
! Cannot freeze field 'eav.attribute.datatype' 
! (this field has class eav.fields.EavDatatypeField) 

! South cannot introspect some fields; this is probably because they are custom 
! fields. If they worked in 0.6 or below, this is because we have removed the 
! models parser (it often broke things). 
! To fix this, read http://south.aeracode.org/wiki/MyFieldsDontWork 

私はこのhttp://south.aeracode.org/docs/customfields.htmlを読んでいると私は2つのプロジェクトのいずれかをあきらめることなく、この問題を解決しようとしています。

誰でも手伝ってもらえますか? ありがとう

答えて

2

私が見つけた最良の答えは、それはあなたがsettings.pyでSOUTH_MIGRATION_MODULESの辞書を追加し、存在しないモジュール

SOUTH_MIGRATION_MODULES = { 
    'eav': 'ignore', 
} 
+0

おそらくこれはより良い解決策です。 – balsagoth

2

githubを見ると、django-eavは非常に積極的に開発されていないようです。必要に応じて機能し、データモデルを変更する予定がない場合は、サウスを適用する必要はありません。南はいくつかのアプリを管理し、他のアプリは管理しません。

あなたが構築して変更しているアプリケーションでは、必ずサウスを使用してください。しかし、安定したライブラリのために、私はまれにしか気にしません。

+0

にそのアプリをマッピング設定しかし、EAVは私にタイトであることを示唆しているhttp://south.aeracode.org/docs/settings.html#setting-south-migration-modules

からでしたモデル。 – balsagoth

+2

GenericForeignKeyでデカップリングされています。モデルの主キーと名前が変更されない限り、心配する必要はありません。モデルのフィールドを心臓のコンテンツに追加したり削除したりすることができます。モデルの名前を変更したり、独自のモデルでPKを変更したりする場合は、EAVテーブルを含む魅力的なデータ移行を行う必要があります。南でeavアプリを管理するのではなく、やっかいです。 EAVを南に管理することは難しいだろう。 – Leopd

+0

はい、私はあなたに同意します。私はeavや他のサードパーティのアプリケーションを追加していない。あなたの提案に感謝します – balsagoth

関連する問題