[英]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中成为User1
和User2
。 为了使它正常工作,我在每个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.