2016-10-24 9 views
0

Django 1.10では、username max length was increased from 30 to 150 characters.私はこれを利用するために移行したいdjango 1.9のアプリケーションがあります。Django mig dbカラムの幅

私はDjangoのインストールを1.10にアップグレードしました。私がpython manage.py makemigrationsになったとき、私は何の変化も検出されません。

既存のユーザー名を30文字以上に編集しようとすると、ログにdjango.db.utils.DataError: value too long for type character varying(30)が表示されます。

私は、postgresでハッキングすることなくこれを処理するために、Djangoの組み込みマイグレーションを使用することをお勧めします。 DB列の幅を変更するために移行をどのようにトリガーできますか?

モデルにスローアウェイフィールドを追加し、マイグレートして削除するというアイデアがありましたが、それはハッキーに見えます。それよりもうまく処理できる方法があるようです。

これについてDjangoのドキュメントは静かに見えます。

答えて

0

makemigrationsを実行してフィールドを削除し、makemigrationsを再度実行してからmigrateを実行して、モデルに使い捨てフィールドを追加しました。私はこのメッセージを持っています:

Running migrations: 
    Applying foo.0033_userprofile_throwaway... OK 
    Applying foo.0034_remove_userprofile_throwaway... OK 
    Applying auth.0008_alter_user_username_max_length... OK 

多分もっと良い方法がありました。とにかく、マイグレーションの後、私はユーザー名を30文字以上に変更し、うまくいった。

関連する問題