2016-08-12 9 views
0

장고 (Django) 앱에서 Company와 Employee에 대해 여러 유형의 사용자를 만들고 싶습니다.django에서 사용자 정의 사용자 모델을 사용하여 여러 유형의 사용자를 만드는 방법은 무엇입니까?

내가 마음에두고 있던 것은 회사 자체가 가입 한 다음 회사 관리자가 대시 보드를 통해 직원을 만들 것입니다.

생성 후 직원이 직접 로그인합니다.

(가능한 경우) 회사 및 직원을 위해 하나의 로그인 양식 만 사용할 수 있습니다.

class Company(models.Model): 
    name = models.CharField(max_length=150) 
    logo = models.CharField(max_length=1000, blank=True) 
    admin_name = models.CharField(max_length=200) 
    admin_email = models.CharField(max_length=200) # can be used as 'username' 
    website = models.CharField(max_length=200, blank=True) 

class CustomUserManager(auth_models.BaseUserManager): 
    def create_user(self, email, first_name, emp_id, password): 
     # 
    def create_superuser(self, email, first_name, emp_id, password): 
     # 

class Users(auth_models.AbstractBaseUser, auth_models.PermissionsMixin): 
    company = models.ForeignKey(Company, on_delete=models.CASCADE, null=True) 
    first_name = models.CharField(max_length=200) 
    last_name = models.CharField(max_length=200) 
    profile_pic = models.CharField(max_length=2000, blank=True) 
    email = models.EmailField(unique=True, null=True) 
    emp_id = models.CharField(max_length=50) 

    USERNAME_FIELD = 'email' 
    REQUIRED_FIELDS = ['first_name', 'emp_id', ] 
    objects = CustomUserManager() 

거의 모든 곳에서 수색했지만 아무 것도 찾을 수 없습니다. 이 문제를 해결할 방법이있는 경우이 작업을 수행하는 데 필요한 트릭을 알고 있다면 알려주시기 바랍니다. 미리 감사드립니다.

Group.objects.create(name='Company') 

을 그리고 해당 그룹에 사용자를 할당 :

+0

이 기능은 장고에 포함되어 있습니다. https://docs.djangoproject.com/en/1.10/topics/auth/default/#groups – IanAuld

답변

0

당신은 사용자의 서로 다른 유형의 그룹을 만들 수 있습니다

user.groups.add(group) 

당신이 할 수처럼 소리 마지막 것은입니다 직원을 회사 사용자와 연결하기 위해 다음과 같이 사용자 모델에 자체 참조를 추가 할 수 있습니다.

company_user = models.ForeignKey("self", null=True, blank=True) 

그런 직원의 경우 사용자를 해당 회사 사용자와 연결하고 회사 사용자 자신을 위해 비워 둘 수 있습니다.

비록 당신이 이미 관련 사용자를 그런 식으로 추적해야하는 회사 외래 키를 사용하고 싶지는 않습니다. 그러나 회사에 여러 "회사 사용자"가있을 수 있다면 직원을 각각 그룹화 할 수 있습니다.

도움이 되었기를 바랍니다.

+0

덕분에 ...이 작업이 .. !! :) 늦은 대답을 위해 유감스럽게 생각합니다. – Niraj

+0

위대한! 다행스럽게 도울 수있어! –