型號

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)