1

データベースの管理に South を使用しています。モデルの作成方法で小さな変更を加えるたびに、移行のためにたくさんの体操をしなければならなくなるようです。たとえば、次のようなクラスがあるとします。

class Entry(models.Model):

    title = models.CharField(max_length=80)
    author = models.ForeignKey(User)
    pubDate = models.DateTimeField()
    tags = models.ManyToManyField(Tag)
    text = models.TextField()

EntryおよびForeignKeyとして持つ別のクラス:

class Comment(models.Model):
    author = models.ForeignKey(User)
    entry = models.ForeignKey(Entry)
    pubDate = models.DateTimeField()
    text = models.TextField()

これは些細なことですが、 で pubDate という名前を pub_date に変更するという単純なことを行う場合Entry、この名前の変更のためだけにスキーマの移行を適切に実行するには、次のように設定する必要があります。

default=None, null=True

の pubDateEntryと のentryフィールドの両方に対してComment、そうしないと、移行を実行しようとしたときに次の例外が発生します。

The field 'Comment.entry' does not have a default specified, yet is NOT NULL.

その後、戻ってデフォルト/ヌル値を取り出す必要があります。これを行うためのより退屈な方法はありますか、それともモデルを移行にコミットする前にモデルを本当に考えなければなりませんか? 最初の段階で、保持したいデータがない場合は、データベースをセットアップして破棄する方が理にかなっていますか? もしそうなら、これを行う最も簡単な方法は何ですか?

4

1 に答える 1