2017-01-05 9 views
1

OneToOneFieldを使用して、新しいクラス "Profile"でユーザークラスを拡張しました。それは機能しましたが、今は古いアカウントを再利用できません。 (ユーザー、スーパーユーザー、管理者)。以前のアカウントには「プロファイル」がないため、「RelatedObjectDoesNotExist」エラーが表示されます。私は彼らがアカウントを作り直す以外の方法だと考えています(なぜなら、私は新しいバージョンがリリースされるたびにプロダクションでそれを想像することができないからです)。しかし、すべての古いアカウントを更新する方法を理解することはできません。誰か手掛かりがありますか?いくつかの場合にはOneToOneField(ユーザー)はすべてのアカウントを再作成しますか?

+0

どのように把握するのは難しいですか?すべての古いアカウントを見つけるためのクエリを書いて、 'for'ループを書いてそれぞれの' Profile'を作成してください。 –

答えて

3

あなたのモデル(複数可)を更新するとき、あなたは、スキーマの移行に加えて、データ移行を記述する必要があります - あなたのケースでは、追加情報についてhttps://docs.djangoproject.com/en/1.10/topics/migrations/#data-migrations

を参照してください、あなたはへのデータ移行を作成する必要があります既存のすべてのユーザーのプロファイルオブジェクトを作成します。ドキュメントの例に従ってください - それはかなり良いです。

重要な留意点 - マイグレーションでプロファイルモデルをインポートするだけではありません。あなたはそのようにする必要があります:

Profile = apps.get_model("yourappname", "Profile") 
関連する問題