我必须在我的应用程序中管理多个用户类型,
我创建了用户模型,其中包含这两种模型的公共字段。
class User(AbstractBaseUser):
#common fields
class PersonType(models.Model):
# persone_type which is a choice field
class Person(User):
# many to many with PersonType
class CompanyType(models.Model):
# company_type which is a choice field
class Company(User):
# many to many with CompanyType
这种方式是否正确?
如何为两种类型的用户管理注册和登录。
即。注册时,我应该根据api数据中发送的“account_type”字段创建用户或Person / Company对象的对象。
如果是以后的选项,如何管理两个模型的身份验证和登录?
答案 0 :(得分:1)
如果可能,我喜欢简单易懂。
user_type_choices = (('p', 'person'), ('c', 'company'))
class MyUser(AbstractBaseUser):
...
user_type = models.CharField(max_length=1, choices=user_type_choices)
user_group = models.ManyToManyField(UserGroup)
稍后为更多user_types留出空间。然后使用Django的组或您自己的表与“组”定义。
class UserGroup(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField()
allowed_user_type = models.CharField(max_length=1, choices=user_type_choices)
为了确保不会将任何人添加到组中,只需覆盖save()
并检查该组是否允许user_type
。