我在google上研究了一下,发现了许多处理多种用户类型的不同解决方案。为了使我的问题更清楚,这是要求
1)有两种类型的用户 - (一种是一般的,另一种是开发者)
2)两种用户类型都有相同的表单字段 - (用户名,电子邮件,密码,密码(确认))
以下是我的尝试。
class customUser(AbstractBaseUser):
user_choice = (
('G', 'General'),
('D', 'Developer'),
)
user_type = models.charField(choices=user_choices, max_length=2, default='G')
class mainUser(customUser):
type = models.OneToOneField('customUser')
我是否必须明确处理用户名,电子邮件,密码和重新密码字段?
我正在使用django allauth进行单用户注册和登录。我现在必须以不同的方式工作吗?
答案 0 :(得分:0)
如果您需要的只是视图中的不同逻辑,我会按照Jens在评论中的建议行事。使用User
扩展基本Profile
模型,如下所示:
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user_choice = (
('G', 'General'),
('D', 'Developer'),
)
user_type = models.charField(choices=user_choices, max_length=2, default='G')
然后在注册时添加选择user_type
的方法,或者只提供2个不同的注册视图。
在您的观看中,您需要的逻辑取决于帐户类型:
def my_view(request):
if request.user.profile.user_type == 'G':
# do stuff for General users
else:
# do Developer stuff