0

私のプロジェクトでは、ログイン後、ユーザーはいくつかのプロセスを経て個人情報を入力し、いくつかのファイルをアップロードする必要があります

これで、認証プロセスが完了しました

UserProfile には 3 つのフィールドしかありません

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    #activation_key is used in my account registration process
    activation_key = models.CharField(max_length=40) 
    #activation link should be only valid for one day       
    key_expires = models.DateTimeField() 


    def __unicode__(self):
       return self.user.username

これら 3 つのフィールドは、認証プロセスを適切に機能させるのに十分です。

最初の DB 設計では、個人の詳細とファイルを保持するために他のテーブルを使用しました (ユーザーの追加データを保持するために UserProfile を使用することになっていることをまだ認識していなかったため)。しかし、認証プロセスを経て、スタックオーバーフローで多くの投稿に出くわした後、データを UserProfile テーブルに入れる必要があるようです。

だから私の質問は、

  1. UserProfile には、認証プロセス (例: activation_key key_expire_date) と特定のデータ (例: 名前、国、画像) の両方のデータを含めることができますか? (現在、私の UserProfile には認証プロセスのデータのみが含まれています)

  2. この状況では、今すぐ新しいフィールドを追加するか、追加情報を保持する別のテーブルを作成します。どちらが Django プロジェクトのより良い方法ですか?

  3. UserProfile に新しいフィールドを追加すると、以前の認証機能に影響しますか? (profile.save() の問題が少し心配です..)

明確にしていただきありがとうございます。

4

1 に答える 1

1

UserProfile オブジェクトにさらにフィールドを追加しても問題はありません。認証プロセスで使用される列のデータを変更しない限り、問題ありません。

ユーザーの「認証」データを他のデータ (名前、国など) から分割する必要があるかどうかに関しては、実際には設計の問題です。すべてのユーザー プロファイルに常に両方の種類のデータがあると予想される場合は、それらを 1 つのテーブルにまとめることはおそらく理にかなっています。ただし、ユーザーが「認証」データを持っている可能性があるが、常に他のデータを持っているとは限らない場合は、それらを 2 つのテーブルに分割して、データ セットを別々に維持できるようにすることがおそらく理にかなっています。

于 2013-07-03T06:38:37.457 に答える