CCS*_*Sab 9 django django-admin django-authentication
我想在标准的Django UserCreationForm中添加更多字段,所以我继续将其子类化在我的应用程序的forms.py文件中,最后得到:
class CustomUserCreationForm(UserCreationForm):
email = forms.EmailField(label = "Email")
first_name = forms.CharField(label = "First name")
last_name = forms.CharField(label = "Last name")
class Meta:
model = User
fields = ("first_name", "last_name", "username",)
def save(self, commit=True):
user = super(CustomUserCreationForm, self).save(commit=False)
user.first_name = first_name
user.last_name = last_name
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user
Run Code Online (Sandbox Code Playgroud)
然后我继续为我的用户创建了一个自定义的ModelAdmin,如下所示:
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
inlines = [ProfileInline,]
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
admin.site.register(Class, ClassAdmin)
Run Code Online (Sandbox Code Playgroud)
但是,无论我做什么,当我进入管理页面并尝试添加新用户时,新的CustomUserCreationForm都不会显示.我搞砸了哪里?
编辑:似乎表单没有显示,但正在使用.如果我尝试仅使用典型UserCreationForm具有的用户名和密码字段添加新用户,则会出现错误,当我在ModelAdmin中删除add_form行时,该错误会立即消失.为什么不显示?
我的本地app目录中也没有任何管理员模板.这可能是问题吗?
Bra*_*don 12
您需要将添加的字段添加到自定义用户管理类的add_fieldsets属性中.
#example:
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'email', 'password1', 'password2')}
),
)
Run Code Online (Sandbox Code Playgroud)
用户前几天有一个类似的问题:如何让Django用户注册单步(而不是两步)进程必须使用电子邮件?其中包括创建自定义用户管理表单.
| 归档时间: |
|
| 查看次数: |
6058 次 |
| 最近记录: |