如何在 Django 中管理多个帐户(用户)类型

How to manage multiple account(user) types in django

我必须在我的应用程序中管理多种用户类型,

  1. 人物 - 可以是演员、舞者、歌手、导演、选角导演、编舞、音乐总监等
  2. 公司 - 可以是制作公司、音乐公司等

我创建了 User 模型,它具有这两个模型的公共字段。

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 对象。

如果是后面的选项,我如何管理两个模型的身份验证和登录?

如果可能的话,我喜欢保持简单。

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 的组或您自己的 table 和 "group" 定义。

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