1

Django Framework には 1 つの問題があります。私はこれを挿入する1つのモデルを変更しました:

masterweb_link = models.CharField(_('masterweb_link'), help_text=_('link to MasterWeb tour'), max_length=300, null = True, blank = True)

その後、私はこれでした: -python manage.py syncdb

db_application が変更され、管理パネルで新しい列を操作できるようになりました。私のローカルPCでは、チェックしようとするとすべて問題ありません。

しかし、ホストでこれを実行しようとすると、すべてのアクション モデルが変更され、データベースも変更されますが、Django 管理サイトには新しい列が表示されません。

すべてのアクションを実行してもエラーはありません! 助けてください。

4

4 に答える 4

3

syncdb既存のテーブルを変更しません。

于 2012-10-08T17:01:53.390 に答える
1

Daniel Roseman が述べたように、syncdb既存のテーブルを変更しません。

これを行うには、south http://south.aeracode.org/を使用する必要があります。

を使用するために既存のアプリケーションを変換するための非常に簡単な手順southです。easy_installまず、と入力してインストールできますeasy_install South。Mercurial またはスナップショット tar.gz からインストールする場合は、ここに手順が記載されています。

インストールしたら、既存のアプリケーションを使用するように変換する必要がありますsouth。アプリケーションのsettings.pyファイルで、 を追加southINSTALLED_APPSてから再実行しpython manage.py syncdbます。ここで行っていることは、アプリケーションのデータ テーブルを追加することだけsouthです。あなたのモデルではまだ何もしていません。

ここで、元の投稿で行った変更を元に戻したいと考えています。あったことに戻ります。その変更は数分後に行いますが、まず、アプリケーションが現在southどのように見えるかを伝える必要があります。

python manage.py convert_to_south <appname><appname>アプリケーションの名前に置き換えます。これにより、アプリケーションの初期移行ファイルが作成されます。

これらの変更をバージョン管理にコミットします (または、通常のプロセスでアプリケーションを他の開発者に配布します)。migrationsこれは、アプリケーション ディレクトリに名前が付けられた新しいフォルダーである必要があります。このフォルダに表示されるすべてのファイルをコミット/配布する必要があります。

一度だけ: アプリケーションがインストールされているすべての場所で、このコマンドを実行して、同様に南を使用するように変換する必要があります。ドキュメントpython manage.py migrate <appname> 0001 --fakeによると、convert_to_south が行う最初の移行では、既存のすべてのテーブルを作成しようとするため、これが必要です。代わりに、 を使用して既に適用されていることを South に伝えると、次の移行が正しく適用されます。--fake

次に、変更を行います。モデルを再編集して、必要な変更を加えます。モデルを保存します。

次のコマンドを実行しますpython manage.py schemamigration <appname> --auto。South は、モデルとそれらがどのように変更されたかを分析し、移行スクリプトを作成します。これが、変更を元の状態に戻す必要がある理由です。そうしsouthないと、移行元がわかりません。

完了したら、実行しますpython manage.py migrate <appname>。再度、migrationsフォルダーをコミットまたは配布します。これが展開される各場所で実行する必要がありますpython manage.py migrate <appname>

将来、スキーマを変更するときは、実行 python manage.py schemamigration <appname> --autoして移行スクリプトを作成しpython manage.py migrate <appname>、変更をインストールします。

southまた、移行中に処理できる他のことについては、ドキュメントを一瞥することをお勧めします。ただし、上記で開始できるはずです。South のドキュメントの場所はhereです。

于 2012-10-08T18:17:32.117 に答える