如何使用Django中的Abstractuser类创建两个不同的用户(医生和患者),以便他们俩都可以发挥自己的作用



我想创建两个用这些详细信息的用户。

class Doctor(models.Model):
    username = models.CharField(max_length=500)
    password = models.CharField(max_length=500, null=True)
    gender = models.CharField(choices=GENDER_CHOICES, max_length=128)
    specialties = models.CharField(max_length=1000)
    education = models.CharField(max_length=1000)
    hospitals = models.CharField(max_length=1000)
    rate = models.FloatField()
    email = models.EmailField(unique=True)
    description = models.TextField(null=True)
class Patient(models.Model):
    username = models.CharField(max_length=500)
    password = models.CharField(max_length=500, null=True)
    email = models.EmailField(unique=True)
    gender = models.CharField(choices=GENDER_CHOICES, max_length=128)
    age = models.IntegerField()
    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)

我也开始使用这种方法,并在您的问题上进行判断,很可能您已经弄清楚了,但是我想回答这个问题不久前正在寻找答案,也许这可以帮助他人。

无论如何,我以前在此抽象使用者之前使用了"类似的方式",但是在您的答案中,我看到它们都混合在一起,在您的患者模型中,您使用了OneToone FK与原始Auth_user模型,但是您'重新要求抽象使用者。因此,以防万一您正在寻找"类似的配置文件",这确实称为"代理模型"选项,您几乎已经完成了,您只需要像患者模型一样向用户添加一个OneToOne字段医生模型,然后您将拥有两个带有额外信息的模型,但与登录,访问或权限无关,仅用于个人资料,准备就绪。以下链接上的文档解释了这一点代理模型基本文档

现在,如果您要寻找的是使用另一种方式,用用户模型替换了您需要抽象器的用户模型,您需要做的事情(或者更好地说明,您可以做的事情,这就是我'M现在进行(是创建基本自定义用户类。您可以在文档中看到一个完整的示例在您的情况下

class MyBaseUser(AbstractUser):
    username = models.CharField(max_length=500)
    password = models.CharField(max_length=500, null=True)
    email = models.EmailField(unique=True)
    gender = models.CharField(choices=GENDER_CHOICES, max_length=128)

class Doctor(MyBaseUser):
    specialties = models.CharField(max_length=1000)
    education = models.CharField(max_length=1000)
    hospitals = models.CharField(max_length=1000)
    rate = models.FloatField()
    description = models.TextField(null=True)
class Patient(MyBaseUser):
    age = models.IntegerField()

现在,请记住,您需要在设置中指定auth_user_model,您可以遵循cookieCutter模板,以便所有这些都会预先格式化。另外,您可以在mybaseuser类中添加用户名field,以说明哪个字段将用作登录用户名以及同一类中的必需_fields。

有一个很好的人,正如我们的朋友德斯汀喜欢说的那样。

最新更新