如何在 Django 中管理多个帐户(用户)类型
How to manage multiple account(user) types in django
我必须在我的应用程序中管理多种用户类型,
- 人物 - 可以是演员、舞者、歌手、导演、选角导演、编舞、音乐总监等
- 公司 - 可以是制作公司、音乐公司等
我创建了 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
。
我必须在我的应用程序中管理多种用户类型,
- 人物 - 可以是演员、舞者、歌手、导演、选角导演、编舞、音乐总监等
- 公司 - 可以是制作公司、音乐公司等
我创建了 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
。