2017-03-11 6 views
1

Google에서 약간 연구했고 여러 사용자 유형을 처리하기위한 여러 가지 솔루션을 발견했습니다. (하나는 일반과 다른 개발자입니다)django에서 여러 사용자 유형을 처리하는 올바른 방법 1.10

2) 두 사용자 유형이 동일한 양식 필드를해야합니다 - - (사용자 이름 더 명확 내 질문을하려면, 여기에 요구

1) 사용자의 두 가지 유형입니다 , 전자 메일, 암호, 암호 (확인))

다음은 내가 시도한 것입니다.

class customUser(AbstractBaseUser): 
    user_choice = (
     ('G', 'General'), 
     ('D', 'Developer'), 
    ) 
    user_type = models.charField(choices=user_choices, max_length=2, default='G') 

class mainUser(customUser): 
    type = models.OneToOneField('customUser') 

사용자 이름, 이메일, 비밀번호 및 비밀번호 입력란을 명시 적으로 처리해야합니까?

단일 사용자 등록 및 로그인에 django allauth를 사용하고 있습니다. 내가 다르게 작동해야합니까?

+0

: [User' 모델 확장하기] (https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#extending-the-existing-user-model)를 참조하십시오. –

+0

실제로 빌드 할 필요가 있습니까? 사용자 정의 사용자 유형? 아마 당신이 특별한 논리를 필요로하지 않는다면 표준'User' 모델에 링크 된 모델을 추가하는 것만으로 충분할 것입니다. 여기서 설명하는 것부터 다른 모델을 필요로하지는 않습니다. –

+0

@LaurentS는 두 명의 다른 사용자를 생성 할 때 대략적인 코드를 보여줄 수 있습니까? 사용자는 가입 프로세스를 선택할 수있는 옵션을 갖습니다. 옵션은 개발자로 가입하고 위에서 설명한대로 일반 사용자로 가입하는 것입니다. 맞춤식으로 가입하지 않는 것. – pythonBeginner

답변

0

보기에 필요한 논리가 모두 다른 경우 Jens가 의견에서 제안하는 것을 수행합니다. 그런 다음

from django.contrib.auth.models import User 

class Profile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    user_choice = (
     ('G', 'General'), 
     ('D', 'Developer'), 
    ) 
    user_type = models.charField(choices=user_choices, max_length=2, default='G') 

을 하나 가입에 user_type을 선택하거나 로그온에 대한 두 가지보기를 제공 할 수있는 방법을 추가 :이 같은 Profile, 뭔가 기본 User 모델을 확장합니다.

그리고 당신은 계정 유형에 따라 논리를 필요로 귀하의 의견에

: 당신이 단지`Profile` 모델을 사용하여 오프 더 나은 것 같아 당신이 공유하고 기반으로

def my_view(request): 
    if request.user.profile.user_type == 'G': 
     # do stuff for General users 
    else: 
     # do Developer stuff 
+0

개발자와 일반 모두 다른 가입 양식보기를 만들어야합니까? – pythonBeginner

+0

그것은 당신의 디자인 결정입니다. 나는 네가 왜 *를 가질만한 이유가 있다고 생각하지 않는다. 표준 가입 양식을 하위 클래스로 분류하고 입력을 추가하여 사용자가 원하는 계정 유형을 선택할 수 있습니다. –