0

それを行う最も簡単で簡単な方法を知りたい:

私は Student というモデルを持っており、データベースには多くの Student があり、次のような多くの属性があります。

名前の種類

ID int(11)

名前 varchar(200)

セックス varchar(1)

ステータス int(11)

作成日時

私がやりたいことは、モデルの名前を Costumer に変更し、「ステータス」フィールドを整数ではなく Charfield (varchar) にすることです。また、データベース内のデータをそのまま維持する必要があります。

4

3 に答える 3

2

SOUTHの世界に自分を開きましょう。South は、Django プロジェクトのインテリジェントなスキーマとデータ移行です。

インストール後、django 設定の installed_apps リストに 'south' を入力すると、2 つのコマンドを実行する必要があります。

  1. python manage.py schemamigration [my_app_name] --initial #initial は、初めて実行するときに使用されます
  2. ステップ 1 の後、アプリ フォルダーに「migrations」という名前のフォルダーが作成されます。次に、python manage.py migrate [my_app_name] を実行して移行を適用する必要があります。

移行を適用した後、python manage.py migrate [my_app_name] --list を実行して、移行のステータスを確認できます。* が付いている移行は適用されています。

于 2012-05-15T20:04:36.603 に答える
0

テーブル costumer を作成します ( id int(11),

名前 varchar(200),

セックス varchar(1),

status varchar(20) 作成日時 );

学生から作成されたコスチューム選択ID、名前、性別、キャスト(文字としてのステータス)に挿入します。

もちろん、djangoを編集して一致させます。

于 2012-05-15T20:08:50.723 に答える
0

Student を参照するモデルが他にない場合は、次のようにします。

  1. 最初にデータベースをバックアップし、そこから(別の異なるデータベースに)復元できることを確認してください

  2. django モデルの Python コードを更新する

  3. django に新しいテーブルを作成させます (名前を変更したモデル用):

    python manage.py syncdb
    
  4. 古いテーブルから新しいテーブルにデータをコピーします。

    echo 'insert into costumer select id, name, sex, cast(status as char), created from student;' | python manage.py dbshell
    

ただし、外部キーまたは多対多関係を使用して古いテーブルを参照する他のモデルがある場合、これらの他のモデルのデータベース スキーマに古いテーブルへの参照がある可能性があるため、上記は機能しません。その場合は、これを試すことができます:

  1. すべてのモデルを json にダンプします

    python manage.py dumpdata --indent 4 > everything.json
    
  2. django モデルを更新する

  3. Django に新しいテーブルを作成させます (名前を変更したモデル用):

    python manage.py syncdb
    
  4. json ファイルを手動で編集し、パターン"model": "yourapp.student""model": "yourapp.costumer". モデルとモデル間の関係によっては、他の置換が必要になる場合があります。

  5. json をリロードする

    python manage.py loaddata
    

将来的には、@mangobug による回答を参照し、使用を開始してdjango-southください。

于 2012-05-15T21:48:10.940 に答える