1

さて、私はアプリを持っていて、それを南に変換したかったのです(それが正しい用語であれば)。私はモデルを持っていたので、これをやりたかったのです。

python manage.py syncdb

その後、モデルに変更を加えましたが、syncdb を使用できませんでした。いくつかの変更を行った後、南を使用することが解決策であることがわかりました。だから私はインストールしたアプリに南を入れてからやった

python manage.py syncdb

そして南に設置されました。次に、 www.djangopro.com/2011/01/django-database-migration-tool-south-explained/ の指示に従って、次のことを行いました

manage.py convert_to_south myapp 

ジェネレーション 1 の移行ファイルを作成し、migrationhistory エントリを作成することもできました。次に、私はやった

manage.py schemamigration myapp --auto

そしてそれは言った

 ? The field 'Users.date_of_birth' does not have a default specified, yet is NOT NULL.
 ? Since you are adding this field, you MUST specify a default
 ? value to use for existing rows. Would you like to:
 ?  1. Quit now, and add a default to the field in models.py
 ?  2. Specify a one-off value to use for existing columns now
 ? Please select a choice: 2
 ? Please enter Python code for your one-off default value.
 ? The datetime module is available, so you can do e.g. datetime.date.today()
 >>> 

これは何を意味するのでしょうか?私は何か間違ったことをしていますか?オンオフのデフォルト値にはどのような値を設定すればよいですか?

このウェブサイトである south.readthedocs.org/en/latest/tutorial/part3.html を見ると、southtut というアプリで schemamigration --auto と migrate を使用したときに、1 つを要求しなかったことがわかります。最初はデフォルト値から外れているので、何か間違ったことをしていると思います。何か案は?

4

1 に答える 1

2

いいえ、すべて問題ありません。Users.date_of_birthたとえば、モデルでデフォルト値が指定されていないフィールドがあるためdefault=datetime.now()、古いエントリの移行のデフォルト値を指定するよう求められます。

ステップ2の後、次のように表示されます。

The datetime module is available, so you can do e.g. datetime.date.today()

実行してEnterキーを押すか、フィールドdatetime.date.today()のデフォルトの日付を選択してください.date_of_birth

于 2013-09-13T02:33:37.200 に答える