【发布时间】:2019-11-26 08:25:07
【问题描述】:
我正在使用 Python(3.7) 和 Django(2.2) 进行一个项目,其中我必须实现四种类型的用户为(1): Personal - Below 18 (2): Personal 18 or Above (3): Coach (4): Parent,每个用户将共享一些基本字段,如First & Lat name, Email, Gender, Account type,但也会有不同的权限、仪表板和功能,需要提供不同的注册表单但只有一个登录表单。除此之外,我还需要使用Email 作为该项目的用户名。
什么是好的和可扩展的方法?任何资源或教程链接将不胜感激。
在这种情况下如何使用django-allauth?
以下是我的想法:
class BaseUser(AbstractBaseUser):
email = models.EmailField(max_length=255, unique=True)
is_personal_above_18 = models.BooleanField(default=False)
is_personal_below_18 = models.BooleanField(default=False)
is_parent = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
def __str__(self):
return self.email + '/s account'
class PersonalAccountAbove18(BaseUser):
customer_id = models.BigIntegerField(default=generate_cid())
class PersonalAccountBelow18(BaseUser):
customer_id = models.BigIntegerField(blank=False)
class ParentAccount(BaseUser):
customer_id = models.BigIntegerField(default=generate_cid())
在每个模型中使用customer_id的原因是因为后面我们需要连接不同的帐户,例如如果有人想创建一个pERSONAL - BELOW 18,他将需要提供他的Parent帐户的customer_id .
【问题讨论】:
-
从
BaseUser继承时,为什么需要一对一字段? -
是一个错误,刚刚删除。
标签: python django python-3.x django-models django-forms