我想创建两个用这些详细信息的用户。
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。
有一个很好的人,正如我们的朋友德斯汀喜欢说的那样。