型号

4

我有一个继承AbstractUser的典范,是这样的:型号

class Driver(AbstractUser): 
    dni = models.CharField(max_length=8,validators=[validate_dni],unique=True) 
    license = models.CharField(max_length=9,unique=True) 
    birthday = models.DateField() 
    sex = models.CharField(max_length=1, choices=SEX_CHOICES) 
    creation_date = models.DateField(auto_now = True) 

根据此:https://docs.djangoproject.com/en/dev/topics/auth/customizing/

如果你完全快乐Django的用户模式,你只是想 添加一些额外的个人资料信息,你可以简单地继承 django.contrib.auth.models.AbstractUser并添加自定义配置文件 领域。此类提供默认的 用户的完整实现作为抽象模型。

但是,在我的管理员视图中,密码字段是简单的文本输入并且密码保存为原始文本。我可以尝试AbstractBaseUser,但首先我需要澄清这个问题。我从Django开始,所以我是一个新手。

谢谢。

回答

2

您需要定义一个函数来散列该密码。我想你直接把它保存到数据库。

class MyForm(forms.ModelForm): 
    ............ 
    def save(self, commit=True): 
     # Save the provided password in hashed format 
     user = super(MyForm, self).save(commit=False) 
     user.set_password(self.cleaned_data["password"]) 
     if commit: 
      user.save() 
     return user 
+0

谢谢,它的工作原理。我认为这是没有必要的编辑保存方法或来电“set_password”方法作了明确规定。 – 2013-03-13 20:53:44

3

您不必实际定义自己的功能。你只需要使用与django.contrib.auth.adminUserAdmin类注册它和它的作品开箱。

明确,在admin.py文件,确保您具备以下条件:

from django.contrib.auth.admin import UserAdmin 
admin.site.register(CustomUserModel, UserAdmin)