1

Django で 2 つの異なるユーザー セットの認証システムを実装しようとしています。学生 (ユーザー名とパスワードを使用)、開発者 (メールとパスワードを使用)。現在、学生、開発者によって共有される (共通の) UserProfile モデルがあります。ここに私のモデルコードがあります:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length=50, null=True, blank=True)
    slug = models.SlugField(max_length=50, db_index=True, unique=True)#this will be used as his unique url identifier
    objects = UserProfileManager()

    class Meta:
        abstract = True

class Student(UserProfile):
     ''' some student specific fields might go here '''

class Developer(UserProfile):
    ''' some developer specific fields might go here '''

そしてsettings.pyで私は与えました:

AUTH_PROFILE_MODULE = 'users.UserProfile'

UserProfile モデルだけで認証が機能していました。しかし、Student, Developer を導入するとすぐに、すべてが台無しになりました。私は得ています

UserProfile には属性「DoesNotExist」がありません

(これは UserProfileManager exists メソッドからのものです) また、

SiteProfileNotAvailable

エラー。(メール認証バックエンドを書き始める前から、これらのエラーが発生しています。) 私は何か不足していますか?私が望んでいたことを達成するために従うべき最善の道は何ですか。

4

1 に答える 1

0

問題は、UserProfile の抽象的な定義にある可能性があります。「abstract = True」を除外すると、うまくいくはずです。ただし、これによりテーブル スキームがどのように変化するかに注意してください。

于 2010-11-26T01:57:39.467 に答える