2016-09-19 2 views
0

나는 각각의 auths가 작동하는 두 개의 django 응용 프로그램을 통합하려고합니다. 이를 위해 User 대신 AbstractUser를 하위 클래스로 만들려고합니다. PyBB docsDjango#substituting_custom_model을 팔로우하고 있습니다. 개별 .py (내 사이트 패키지에있는 PyBB 라이브러리의 마이그레이션 포함) 이외의 모든 모든 마이그레이션 파일을 제거했습니다. 또한 새 데이터베이스를 빈 데이터베이스로 변경하여 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를 실행, 나는이 오류 나는 여기서 뭘하려고 노력하고 있는가?

추신 :이 응용 프로그램은 username_field 또는 required_field없이 User와 함께 onetoone으로 잘 작동하고 있습니다.

PPS : 내 contrib.auth.models에서 AbstractUser 모델을 확인했으며 class Meta: abstract = True입니다. 좋아, 그럼 추상, 아직도, 어떻게 해결합니까? 난 단지 하나의 로그인, 현재, 내 사이트의 두 부분, URL을 통해 연결되어 있지만 별도의 로그인을 요구하고 서로 다른 로그인을 감지하지 않아도됩니다. 이 일을 위해 무엇을해야합니까?

답변

2

추상 모델과 일대일 관계를 가질 수 없습니다. 실제로 추상적 모델은 결코 실제로 인스턴스화되지 않습니다.

초록 사용자는 을 상속 받았다.. 구조는 다음과 같아야합니다.

class Student_User(AbstractUser): 
    ... 
관련 문제