2017-03-06 69 views
1

我是Django的新手,並嘗試使用兩種用戶類型(自由職業者和客戶)創建應用程序。我知道如何創建一個用戶配置文件類,它很適合我:在Django中的多種用戶類型

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    description = models.CharField(max_length=100, default='') 
    country = models.CharField(max_length=100, default='') 
    website = models.URLField(default='') 
    phone = models.IntegerField(default=0) 

def create_profile(sender, **kwargs): 
    if kwargs['created']: 
     user_profile = UserProfile.objects.create(user=kwargs['instance']) 


post_save.connect(create_profile, sender=User) 

這很適合我在一個用戶類型的用戶。但是現在我正在構建一個包含兩種類型的用戶(自由職業者和客戶)的應用程序,完成這個任務的最佳方法是什麼。這兩個用戶將有不同的觀點和信息。我應該:

  1. 創建2個不同的應用程序,並重復正常的註冊和每個登錄。
  2. 如果我這樣做,希望登錄時的自由職業者不會訪問客戶的觀點。
  3. 如果我決定爲它使用一個應用程序和模型,如何將用戶類型添加到用戶配置文件中。 請我需要一步一步的初學者的方法,或鏈接到相關的來源。 謝謝。

回答

0

你可以試試這個:

class UserProfile(models.Model): 
    user = models.ForeignKey(User) 
    #define general fields 

class Freelancer(models.Model): 
    profile = models.ForeignKey(UserProfile) 
    #freelancer specific fields 

    class Meta: 
     db_table = 'freelancer' 

class Customers(models.Model): 
    profile = models.ForeignKey(UserProfile) 
    #customer specific fields 

    class Meta: 
     db_table = 'customer' 

然後,您可以從用戶配置文件獲得任意數量的用戶。

2

你應該只需要使用Groups Django的機制 - 你需要創建兩個組freelancer,讓說common,並檢查用戶是否在第一或第二組 - 然後給他相應的視圖

要檢查是否用戶在組可以使用

User.objects.filter(pk=userId, groups__name='freelancer').exists() 
+0

如何在註冊期間添加組? –

+0

您應該在註冊期間將用戶添加到定義的組中,而不是組本身 - 應該先定義 –