编辑我重新的问题here如何创建几个自定义用户模型并能够自定义他们的管理表单?
我要创建几个自定义用户模型扩展django.contrib.auth.models.User
,具有以下特点:
一些具体领域
一个很好的管理,即,对于每个模型,我可以轻松地自定义一个管理表单(例如,显示/隐藏父类
django.contrib.auth.models.User
和子模型的一些字段)。
我几乎管理与下面的代码来做到这一点,但我仍然有一个问题:密码被清除我想从管理员修改为MyUser1或MyUser2的一个实例每次。
这是最好的方法吗?如果是这样,我该如何解决这个被清除的密码问题?
models.py
from django.db import models
from django.contrib.auth.models import User
class MyUser1(User):
#add more fields specific to MyUser1
class MyUser2(User):
#add more fields specific to MyUser2
admin.py
class MyUser1AdminForm(forms.ModelForm):
class Meta:
model = MyUser1
def __init__(self, *args, **kwargs):
super(MyUser1AdminForm, self).__init__(*args, **kwargs)
self.fields['password'].widget = forms.PasswordInput()
def save(self, commit=True):
user = super(MyUser1AdminForm, self).save(commit=False)
user.set_password(self.cleaned_data["password"])
if commit:
user.save()
return user
class MyUser1Admin(admin.ModelAdmin):
form = MyUser1AdminForm
admin.site.register(MyUser1, MyUser1Admin)
# same for MyUser2
你使用的是Django 1.5吗? –
我认为你需要使用ReadOnlyPasswordHashWidget,因为UserChangeForm在用户模型的admin中,因为密码是加密的。看看django/contrib/auth/forms.py和django/contrib/auth/admin.py。 – sneawo
@Paulo Scardine:不,我正在使用1.4.2。 – jul