2016-09-19 2 views
0

私は2つのdjangoアプリケーションを統合しようとしていますが、それぞれに個別の認証が働いています。これを行うには、Userの代わりにAbstractUserをサブクラス化しようとしています。私はPyBB docsDjango#substituting_custom_modelに従っています。私は自分のアプリケーションのすべてのマイグレーションファイルを個別の .py(私のサイトパッケージに入っているPyBBライブラリからの移行を含む)から除外しました。また、私はMysqlデータベースを空白に変更して新たに開始しました。私は以下のようにAbstractUserをサブクラス化しようとしています。DjangoでAbstractUserを拡張する正しい方法は?

マイModels.py:

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

from django.db import models 
class Student_User(models.Model): 
    """ 
    Table to store accounts 
    """ 
    su_student = models.OneToOneField(AbstractUser) 

    USERNAME_FIELD = 'su_student' 

    su_type = models.PositiveSmallIntegerField(db_column='su_type', default=0) 
    su_access = models.TextField(db_column='su_access', default='') 
    su_packs = models.TextField(db_column='su_packs', default='') 

    REQUIRED_FIELDS = [] 

    def __unicode__(self): 
     return str(self.su_student) 

私のsettings.py:

app.Student_User.su_student: (fields.E300) Field defines a relation with model 'AbstractUser', which is either not installed, or is abstract. 

がどのように実行します。

AUTH_USER_MODEL = "app.Student_User" 
PYBB_PROFILE_RELATED_NAME = 'pybb_profile' 

私の主なアプリをmakemigrationsを実行している、私はこのエラーを取得します私はここで何をしようとしていますか?

PS:このアプリは、username_fieldまたはrequired_fieldのないUserでonetooneで正常に動作していました。

PPS:contrib.auth.modelsでAbstractUserモデルを確認したところ、それはclass Meta: abstract = Trueです。わかりましたので、抽象的な、まだ、私はこれをどのように解決しますか?私はちょうど1つのログインが必要です、現在、私のサイトの2つの部分は、URLを介して接続されているが、別のログインを求めて、他のログインを検出しないでください。これのために私は何をする必要がありますか?

答えて

2

抽象モデルと1対1の関係を設定することはできません。定義上、抽象モデルは実際にはインスタンス化されません。

Abstract は、を継承しています。あなたの構造は:

class Student_User(AbstractUser): 
    ... 
です。
関連する問題