から継承してカスタム ユーザー モデルを作成django.contrib.auth.models.User
し、管理者に追加しました。管理者からインスタンスを作成すると、MyUser
(関連する) 2 つの問題があります。
1-管理者では、プレーンパスワード(暗号化されていない)がpassword
フィールドに表示されます
2- のインスタンスで管理者にログインしようとするとMyUser
、
Unknown password hashing algorithm '<mypassword>'. Did you specify it in the PASSWORD_HASHERS setting
バグですか?どうすれば修正できますか?(私はDjango 1.4.2を使用しています)
models.py
from django.contrib.auth.models import User
class MyUser(User):
number = models.IntegerField()
admin.py
class MyUserAdmin(admin.ModelAdmin):
pass
admin.site.register(MyUser, MyUserAdmin)
編集
次のようにパスワードが適切に設定されていますが、管理者からいくつかのインスタンスを変更したい場合MyUser
、パスワードがクリアされ、再度設定する必要があります:
class MyUserAdminForm(forms.ModelForm):
class Meta:
model = MyUser
def __init__(self, *args, **kwargs):
super(MyUserAdminForm, self).__init__(*args, **kwargs)
self.fields['password'].widget = forms.PasswordInput()
def save(self, commit=True):
user = super(MyUserAdminForm, self).save(commit=False)
user.set_password(self.cleaned_data["password"])
if commit:
user.save()
return user
class MyUserAdmin(admin.ModelAdmin):
form = MyUserAdminForm
admin.site.register(MyUser, MyUserAdmin)