使用自己的模型作为用户登录名

时间:2018-10-19 15:40:56

标签: python django model

我对使用自己的模型进行身份验证有疑问。在我的项目中,我有一个Pacient模型,我需要将其保存在管理站点的“用户”面板上。

基本上,我从HTML表单中恢复数据(它们是在中生成的,这是对测试的请求)

(不用担心验证)

models.py

class Pacient(models.Model):
    name = models.CharField()
    birthday = models.DateField()
    email = models.EmailField()
    password = models.CharField()
    confirmPass = models.CharField()

在forms.py文件中

class PacientForm(forms.ModelForm):
    name = forms.CharField
    birthday = forms.DateField
    email = forms.EmailField
    password = forms.CharField
    confirmPass = forms.CharField


class Meta:
    model = Pacient
    fields =('name','birthday','email','password','confirmPass')

使用这些字段,我可以将数据保存在Pacient表中。可以在管理站点中看到它,但在项目名称下与“组”和“用户”分开。

所以,我的问题是这个。如何使Pacient模型被识别为用户(在管理站点中)并使用“电子邮件”作为用户名登录?

1 个答案:

答案 0 :(得分:0)

您应该查看AbstractBaseUser模型:

from django.contrib.auth.models import AbstractBaseUser

此基本模型可以由您的Pacient模型继承,然后可以在settings.py文件中设置:

AUTH_USER_MODEL = 'yourapp.Pacient'

这将告诉django将您的模型用于身份验证。

更多信息在这里:https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#django.contrib.auth.models.CustomUser