2012-01-03 19 views
3

私は、ユーザーがプライマリを含む複数の電子メールを持つことができるDjangoアプリケーションを作成しています。 Djangoでは、SQLユーザーテーブルに単一の電子メールアドレスを格納するためのCharFieldが1つあります。Djangoで複数の電子メールを持つユーザをサポートするにはどうすればよいですか?

私の現在の計画は、「EmailAddress」という新しいモデルを作成し、このモデルを外部キーを介してUserモデルにリンクすることで、複数の電子メールを許可することです。ユーザのプライマリ電子メールアドレスは、ユーザテーブルのemailカラムに格納されます。

しかし、これを行うためのより効率的で信頼できる方法があるかどうかは疑問でした。現在、プライマリ電子メールアドレスを2回保管していますが、データの整合性を損なう可能性があります。

ありがとうございます。

答えて

5

にアクセスすることができますあなたの計画は完全に合理的だと思います。たいていのシナリオでは、@ Hoffの答えに同意しますが、繰り返すフィールドを追加することは間違ったアプローチであることを示唆しています。外部キーはEmailAddressになるので、このシナリオでカスタムプロファイルを作成せずに取得することができますが、他のすべてのシナリオでカスタムプロファイルを使用する方法があります。

-1

カスタムユーザープロファイルモデルを作り検討する必要があります。

https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

例えば

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    email_2 = models.CharField() 
    email_3 = models.CharField() 
    # etc 

これはよくジャンゴでサポートされている、あなたは、単にsettings.pyで、ユーザーの内線番号であるモデルを指定:

AUTH_PROFILE_MODULE = 'YOURAPP.UserProfile' 

user.get_profile() 

、あなたはあなたの拡張Userモデル

+1

ありがとうございます!私は、ユーザープロファイルを使用すると電子メールの数をemail_ [n]テーブルの列の数に制限すると感じています。 – dangerChihuahua007

関連する問題