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

时间:2016-05-10 06:52:15

标签: django python-3.x database-design django-models database-schema

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

  1. 人 - 可以是演员,舞蹈家,歌手,导演,演员,舞蹈指导,音乐总监等。
  2. 公司 - 可以是制作公司,音乐公司等
  3. 我创建了用户模型,其中包含这两种模型的公共字段。

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

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

1 个答案:

答案 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