[英]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)
對於一個用戶類型的用戶,這對我來說效果很好。 但是,現在我正在用兩種類型的用戶(自由職業者和客戶)構建一個應用程序,什么是完成此任務的最佳方法? 這兩個用戶將具有不同的視圖和信息。 我是不是該:
您應該只需要使用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.