私はDjangoをかなり新しくしています。設計していないサイトに機能を追加したりメンテナンスしているだけなので、構造について混乱しています。プロジェクト。このサイトでは、データベースの移行にSouthを使用しています。新しいアプリケーションをプロジェクトに追加するには、これを使用しています。私が今問題を抱えているのは、モデルの特定のフィールドを削除する必要があるということです。これは、もはや必要ではなく、管理ページに記入する必要があるからです。これまでの私のDjangoの理解から、カスタムフィールドのようです。これは、独自の別のライブラリアプリケーションでこのように定義されています(まだ正しいかどうかは分かりません)。カスタムフィールドを使用したカスタムサウスマイグレーション
class Genre(models.Model):
name = models.CharField(max_length=255)
def __unicode__(self):
return u"%s" % self.name
ここでは、カスタムフィールドを使用するモデルがあります。
class Entry(models.Model):
artist = d51fields.ForeignKey(Artist, instantiate_fn=instant_artist)
album = d51fields.ForeignKey(Album, js_methods=['match_artist_and_startswith'], instantiate_fn=instant_album)
track = d51fields.ForeignKey(Track, js_methods=['match_album_and_startswith'], instantiate_fn=instant_track)
genre = models.ForeignKey(Genre)
submitted = models.DateTimeField(auto_now_add=True)
is_rotation = models.BooleanField()
dj = models.ForeignKey(DJ)
show = models.ForeignKey(Show, null=True, blank=True)
objects = EntryManager()
def __unicode__(self):
return "%s [%s]" % (self.artist, self.track)
class Meta:
verbose_name = "entry"
verbose_name_plural = "entries"
私は、カスタムフィールドを移行するためのマニュアルを見てきましたが、それはすべて本当に私のために混乱しているので、私はいくつかのより多くの助けを探しています。私はちょうどジャンルフィールドを保持しているテーブルを取り除き、関連する外部キーの依存関係を取り除きたいと思う。私はSouthのカスタムルールを書いて、移行を使用するか、PostgreSQLで手作業で試してみるべきだと思いますか?私はちょうどPostgresとそれをやってみたと私は惨めに失敗した。
ご指摘いただければ幸いです。あなたが状況についてのより多くの情報がほしいと思ったらちょうど尋ねなさい、そして私はポストにそれを加えることができる。私は対処しなければならない多くの依存関係があると感じていますが、うまくいけば簡単な修正があります。
また、データベース構造の見栄えを良くする方法を知っている人もいます。
ありがとうございます。みなさん皆素晴らしいです。
EDIT1
私はのForeignKeyを取り除いた後、私は次の取るべき行動がどんなものなのか全くわからないmanage.py schemamigration logs --auto
! Cannot freeze field 'logs.entry.artist'
! (this field has class d51_admin_autofk.fields.ForeignKey)
! Cannot freeze field 'logs.entry.album'
! (this field has class d51_admin_autofk.fields.ForeignKey)
! Cannot freeze field 'logs.entry.track'
! (this field has class d51_admin_autofk.fields.ForeignKey)
! 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).
を実行したときに、私が得たものをここで
。私は南のドキュメントを調べましたが、このようなものを移行するためのルールを書く方法についてはあまり明確ではありませんでした。
あなたが言ったことを試してみましたが、カスタムフィールドがフリーズできないというエラーが出ました。投稿を編集して出力を表示しました。 – thebeagle
ああ、申し訳ありませんが、あなたのコードをもう一度見て、実際にカスタムフィールドがあるようです。さて、サウスフィールドにカスタムフィールドの処理方法を伝える方法はあると知っていますが、それについてのドキュメントを読む必要があります。あなたのケースでは、それを自明にする、例えば、南にそれらのフィールドを無視させるのは大丈夫です(彼らに何も変更を加えていないので)。 http://south.aeracode.org/docs/tutorial/part4.html – koniiiik
ありがとうございます。私は最終的にそれを把握することができました。乾杯。 – thebeagle