python - 创建具有不同用户类型的数据库表并使用用户名和密码对用户进行身份验证

标签 python django database models

我被模式创建困住了,所以你能给我一个实现这个场景的想法吗

我确实有 4 种类型的用户,学生、教师、家长和管理员

我已尝试为每个用户创建 4 个表,并为用户名、密码和 token 创建一个表,但我无法将此表与用户相关联,因为不能有多个用户具有相同的用户名

我想要的是我需要使用他们的用户名和密码对每个用户进行身份验证,并且 Student 表可能与 Parent 表有关系!!!!

所以在进行身份验证时我需要知道他/她是哪种类型的用户

我正在使用 python Django 1.9

最佳答案

无需创建四个单独的表,您只需添加一个字段即可反射(reflect)用户的 user_type

class CustomUser(AbstractBaseUser):

    ...
    [other model fields]
    ...

    USER_TYPE_CHOICES = (
        ('student', 'Student'),
        ('teacher', 'Teacher'),
        ('parent', 'Parent'),
        ('admin', 'Admin'),
    )

    user_type = models.CharField(choices=USER_TYPE_CHOICES, max_length=7)

通过这样做,所有用户都将拥有唯一的用户名,并且他们也将变得易于管理。

您可以通过访问其 user_type 来检查用户类型,它将返回此文本值之一“Student, Teacher, Parent and Admin”。因此,您将能够处理不同用户类型的业务逻辑。

关于python - 创建具有不同用户类型的数据库表并使用用户名和密码对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36146551/

相关文章:

python - 伯克利 Overmind 星际争霸 AI 竞赛的编程语言

解析url中特殊字符的Django问题

sql-server - 在 SQL Server 数据库上分散负载

database - 如何在 Liquibase 迁移中的 sql 中插入 html 标签?

javascript - MongoDB $where 无法正常工作

python - standard_init_linux.go :178: exec user process caused "exec format error"

python - 如果循环需要继续运行,如何停止循环中的打印语句重复打印?

python - 狮身人面像 autodoc django 不工作

python - Django:如何连接分隔的整数字段(年,月)作为日期范围来过滤数据库

python - 要在应用程序之间共享的自定义对象管理器应该放在哪里?