簡體   English   中英

Django中的多種用戶類型

[英]Multiple User Types In 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. 如果我決定使用一個應用程序並為其建模,如何將用戶類型添加到用戶配置文件中。 請我需要逐步的初學者方法,或指向相關資源的鏈接。 謝謝。

您應該只需要使用Groups Django機制-您需要創建兩個freelancer組,並說出common並檢查用戶是否在第一組或第二組中-然后向他顯示適當的視圖

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

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

您可以嘗試以下方法:

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'

然后,您可以從UserProfile中擁有任意數量的用戶。

您可以嘗試像這樣擴展默認的Django Auth用戶,使用“帳戶或您喜歡的名稱”創建應用,然后在models.py中編寫如下

class User(AbstractUser):
    is_head = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_public = models.BooleanField(default=False)

在Settings.py中添加Auth擴展模型

AUTH_USER_MODEL = 'accounts.User'

遷移您的“帳戶”應用程序后,您就可以設置“用戶擴展模型”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM