2016-08-12 80 views
0

我想在django應用程序中創建多種類型的用戶,例如一個用於公司,一個用於員工。如何在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() 

我幾乎在任何地方搜索,但找不到任何東西。如果有什麼方法可以解決這個問題,請告訴我,否則如果你知道任何竅門來完成這件事情,那麼也歡迎。 在此先感謝。

+0

此功能包含在Django中:https://docs.djangoproject.com/en/1.10/topics/auth/default/#groups – IanAuld

回答

0

您只需創建組爲不同類型的用戶:

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

,然後將用戶分配到相應的組:

user.groups.add(group) 

這聽起來像你可以做的最後一件事是將員工與公司用戶相關聯,因此您可以像這樣添加自定義用戶模型:

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

因此,對於這些員工,您可以將該用戶與該公司用戶相關聯,並將其留給公司用戶本身爲空。

雖然如果您想使用公司外鍵,您不需要那樣做,但您已經有了這種方式來跟蹤相關用戶。但是,如果一個公司可能有幾個「公司用戶」,那麼可以將員工分組到每個公司。

我希望有幫助。

+0

謝謝...這工作..! :)對不起,雖然晚了回覆.. – Niraj

+0

太棒了!很高興我能幫上忙! –

相關問題