如何使用Django实现多个用户类型?

2024-04-24 00:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个Django模型,如

user_types = (("Agent", "Agent"), ("Branch", "Branch"), ("Company", "Company"))

class User(models.Model):
    email = models.EmailField(db_index=True, unique=True)
    username = models.CharField(db_index=True, max_length=255, unique=True)
    user_type = models.CharField(max_length=100, choices=user_types, blank=False)

如果用户定义用户类型来存储这些字段数据 应该有一些额外的字段,如:

   if user_type is Agent then:
        agent_code
        agent_name
    if user_type is Branch then:
        Branch_code
        Branch_name
        Branch_Id
    if user_type is Company then:
        Company_code
        Company_name
        Company_Id

有什么好办法处理这种模式吗

或者我必须在不同的modelsClass和该类用户类中定义所有必需的字段

比如:

class ReqData(models.Model):
    user_type = models.CharField(max_length=100, choices=user_types, blank=False)
    agent_code = models.CharField(max_length=50, blank=False)
    branch_code = models.CharField(max_length=50, blank=False)
    branch_name = models.CharField(max_length=50, blank=False)
    ....
    ....


class User(models.Model, ReqData):
    ....
    ....