我正在为我的项目创建身份验证模型,我想在我的模型中使用Django的PASSWORD_HASHERS作为密码字段,你能建议我正确的方法吗?
我的model.py文件
class vendor_registration(models.Model):
first_name = models.CharField(max_length=255,null=True)
last_name = models.CharField(max_length=255,null=True)
email_id = models.EmailField(max_length=70,blank=False)
password = models.CharField(max_length=255,null=True)
created_on = models.DateTimeField(blank=True,null=True)
我知道如何将它用于User模型,但需要自定义用户模型的解决方案。谢谢
答案 0 :(得分:0)
虽然您应该为自定义用户创建AbstractBaseUser
的子类,但如果您真的想要没有它,那么这就是如何实现它。
您可以在保存方法中使用make_password功能:
from django.contrib.auth.hashers import make_password
class vendor_registration(models.Model):
first_name = models.CharField(max_length=255,null=True)
last_name = models.CharField(max_length=255,null=True)
email_id = models.EmailField(max_length=70,blank=False)
password = models.CharField(max_length=255,null=True)
created_on = models.DateTimeField(blank=True,null=True)
def save(self, *args, **kwargs):
if not self.pk:
self.password = make_password(self.password)
super(vendor_registration, self).save(*args, **kwargs)
这只会在创建用户时对密码进行哈希处理,您还应该在用户更新时进行考虑。