2012-03-12 4 views
5

現在、Djangoの認証Userへの外部キーを持つカスタムカラム(住所や電話番号など)を使用してMyAppUserという別のクラス/テーブルを作成しました。このDjangoのauth_userテーブルにカスタムフィールドを追加する

from django.db import models 
from django.contrib.auth.models import User 

class MyAppUser(models.Model) : 
    def __unicode__(self) : 
     return self.user.username 

    user = models.ForeignKey(User) 
    comment = models.TextField(blank = True) 
    phone = models.CharField(max_length = 135, blank = True) 

よう

何かが、上記の方法をお勧めますか?またはauth_userを直接変更する必要がありますか?もしそうなら、どうすればいいのですか?

ボーナスの質問:私のカスタムテーブルを両方ともUserと呼ぶ方法はありますか? from django.contrib.auth import modelsを試してみると、models.Userが呼び出されましたが、それでもdjango.db.modelsと衝突すると思います。多分私はfrom django.contrib.auth.models import User as AuthUserを試してみる必要がありますか?これは良いアイデアですか?

答えて

8

Djangoには、User Profilesという独自のプロパティでユーザーを拡張するための組み込みサポートが用意されています。設定方法の概要は、hereで概説されています。

+0

django docが更新されました。したがって、「ユーザープロファイル」へのリンクはhttps://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users – crossin

+0

です。リンクは502を返します。 –

1

これは一般に私が好む方法ですが、私はちょうど安全であるためにDjangoユーザーに触れたくありません。このようにして、ユーザーモデルの何かにぶつからないことがわかり、どのコードがフレームワークコードで、どのコードがコードであるかが明確になります。

私は通常MyAppUserと呼びませんが、通常はUserSettingsのようになります。私は、ユーザ関連のクラスをUserオブジェクトの置き換えとして混乱させたくないだけでなく、より多くの情報を提供するだけです。

一般に、アプリケーションではUserに外部キーを持ちますので、私はまだDjango Userクラスを使用します。私は物事をきれいに保つことがわかります。

私はUserをサブクラス化しようとしましたが、それは私にそれほど多くを与えず、混乱してしまったことがありました。

関連する問題