簡體   English   中英

django中的多個用戶

[英]Multiple users in django

我的應用程序中有兩個用戶,因此我通過像這樣子類化AbstractBaseUser構建了一個自定義用戶,

class MyUser(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(
        verbose_name='email address',
        max_length=255,
        unique=True,
    )
    name = models.CharField(max_length=200, null=True)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)

    objects = MyUserManager()
    #other methods required here

和我的用戶:

class User1(MyUser):
    mobile_no = models.CharField(max_length=10, blank=True, null=True, validators=[validators.MinLengthValidator(10),
                                 validators.MaxLengthValidator(10)])
    profile_pic = models.ImageField(upload_to=Rename('user1_profiles'), null=True, blank=True)
    about = models.TextField(null=True, blank=True)
    other_details = models.TextField(null=True, blank=True)

class User2(MyUser):
    mobile_no = models.CharField(max_length=10,blank=True, null=True, validators=[validators.MinLengthValidator(10),
                                 validators.MaxLengthValidator(10)], unique=True)
    avatar = models.ImageField(upload_to=Rename('profiles'), null=True, blank=True,)

這工作正常,但是當我嘗試使用request.user獲取用戶時,我得到了MyUser實例。 在某些API中,我希望在其他API中成為User1User2 為了使它正常工作,我在每個API中都使用了它:

user = User1.objects.get(id=request.user.id)

要么

user = User2.objects.get(id=request.user.id)

有沒有更優雅的方式做到這一點? 如何阻止User1類型的用戶訪問針對User2類型的用戶構建的API。

request.user將始終返回MyUser實例。

在MyUser中添加以下屬性-

 TYPES_OF_USERS = (("A", "USER1"), ("B", "USER2"))
 user_type = models.Charfield(max_length=1, choices=TYPES_OF_USERS)

然后,使用此代碼

if request.user.user_type == "A":
      foo = request.user.User1.profile_pic
else:
      foo = request.user.User1.avatar

另外要注意的是-由於兩種型號都通用移動設備,因此請將其存儲在主MyUser模型中。

暫無
暫無

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

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