Kaito-a-bit / twitter_clone_app

This repository is for cloning twitter app⚡️
0 stars 0 forks source link

【プロジェクトの途中でカスタムのUserModelに移行する】 #4

Closed Kaito-a-bit closed 2 years ago

Kaito-a-bit commented 2 years ago

○該当ブランチ  #2 (最新状態はpush済み)

○やりたいこと

上記を達成する為に、以下の手順で実行しようとした。 参考: 【Django】独自ユーザーモデルの作成(カスタムUserモデル:AbstractBaseUser) Changing to a custom user model mid-project How to Switch to a Custom Django User Model Mid-Project

  1. カスタムしたUserモデルを作成(username, email, password, birthday(追加したいフィールド)
  2. カスタムしたUserManagerモデルを作成する
  3. 認証モデルを変更する
  4. DB削除・マイグレーション実行(要調査)

3までは実行済みで4を実行する前にこのサイトを参考にデータベースのバックアップをとろうとした。

Kaito-a-bit commented 2 years ago

○問題点 記事の中にある、jsonファイルにDBのバックアップを取るコマンドを実行しようとした所で

django.core.exceptions.FieldError: Unknown field(s) (birthday) specified for User

とのエラーが表示された。

○やったこと・調べたこと

○解決

 birthday = models.DateField
 ...
 birthday = models.DateField()

として定義する必要があった。

Akinori13 commented 2 years ago

とします。

バックアップ作成時はモデルBを参照にしているので、DBに存在しないtableにアクセスし、エラーが発生するという状況かと予測されます。

Akinori13 commented 2 years ago

birthdayフィールドが定義されていないです。まずは()つけましょう!

Kaito-a-bit commented 2 years ago
  • 変更前のモデルをA
  • 変更後のモデルをB

とします。

  • DBはモデルAにより作られています。
  • jsonファイルを生成する時はモデルBを参考にします。

バックアップ作成時はモデルBを参照にしているので、DBに存在しないtableにアクセスし、エラーが発生するという状況かと予測されます。

まさにこうなりました。ありがとうございます。 変更後のモデルに対してのマイグレーションはまだ実行されていないので、この後の手順としては

Akinori13 commented 2 years ago
  • 変更前のモデルをA
  • 変更後のモデルをB

とします。

  • DBはモデルAにより作られています。
  • jsonファイルを生成する時はモデルBを参考にします。

バックアップ作成時はモデルBを参照にしているので、DBに存在しないtableにアクセスし、エラーが発生するという状況かと予測されます。

まさにこうなりました。ありがとうございます。 変更後のモデルに対してのマイグレーションはまだ実行されていないので、この後の手順としては

  • DBの削除
  • migrationを実行 の二つだと認識しているのですがあっていますでしょうか?

バックアップ取れているならokです

Kaito-a-bit commented 2 years ago

jsonファイルにバックアップを取る際の参照先モデルを変更するやり方がわからなかったので、django-dbbackupをプロジェクトに追加する形でバックアップを実行した。