2016-03-27 9 views
1

djangoユーザモデルのusernameフィールドに255文字のmaxlengthを追加します。また、first_nameフィールドとlast_nameフィールドのmaxlengthを増やしたいと思います。私はたくさんの投稿を見てきましたが、多くの投稿がオプションとしてmonkeypatchingを見ましたが、私はそれを理解することができません。カスタム移行ファイルを作成して何らかの形で適用できるかどうか疑問に思っていました。それが可能かどうか、それを達成するためのいくつかの指針があればいいでしょう。Django、ユーザモデルのusernameフィールドを変更

注:それは重複しているように思えるかもしれませんが、私が見つけた投稿の多くは、User.add_to_class()を使って達成できる新しいフィールドを追加することです。私はmaxlengthを変更するつもりです。

+0

[カスタムユーザーモデルを使用](https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#specifying-a-custom-user-model) - のオプションを調べる必要があります。あなたが提案していることをやっていると、ジャンゴのアップグレードが壊れてしまいます。 –

+0

@BurhanKhalid事は私がプロジェクトを終えた今、クライアントはより大きいユーザー名と名前フィールドをサポートしたいと考えています。それゆえ、私は多くの変更を私に与えるオプションを見ていません。カスタムユーザーモデルを使用すると、コードにも必要な変更を加えなければならないと思いますか? –

答えて

1

これはあなたのDjangoプロジェクトに必要な「大きな」変更であり、おそらく終わりではなく始めから行われていたはずです。運用システム上のユーザーモデルを壊した経験豊かな人物として、私は@Burhan Khalidに同意します - contrib.auth.models.Userモデルをそのまま残してください。

まず者はSubstituting a custom User modelから、ドキュメントの警告を見てみましょう:

この設定を変更し、作成したテーブルを持っていた後makemigrationsで がサポートされておらず、手動であなたの スキーマを修正することになります、古いユーザーテーブルからデータを移植します。可能であれば手動で いくつかの移行を再適用します。

私は、これらのフィールドの長さを「ちょうど増やしたい」と思っていますが、これは簡単な変更ではなく、マイグレーションが対処する意味のものでもありません。この問題を解決する「Django-way」は、新しい要件を満たすカスタムUserモデルを追加することです。残念ながら、実稼働サーバーに既存のユーザーデータがある場合は、手動で移行を処理する必要があります。 Customizing authentication in Djangoの標準的な指示が役立ちます。

あなたがうまくいけば、ハードワークをしている報われるれ、受け取ります利点:

  • プロジェクトのコードは、任意のアップグレード保護されています。デフォルトのユーザーモデルにはカスタマイズはありません。
  • プロジェクトコードは "Django-way"に準拠しており、他の開発者やチームメンバーが今後も簡単に作業できます。

あなたが聞きたいことではないと私は理解していますが、それが助けてくれることを願っています。

+0

洞察に感謝します。私はそれを読んだ後に私はカスタムユーザーモデルを使用すると思います! –

関連する問題