我有一个自定义用户模型,它扩展/继承AbstractUser。我也希望在管理中的用户创建表单匹配,但由于某些原因,我只能让它显示用户名和密码字段。没别的了。在
我发现特别有趣的是我在管理员py在创建表单中反映,但其他字段从未显示。例如,我可以更改password1的helptext或label,并将其呈现在表单中,但其他字段不会
另外,如果我设置了extenduseradmin并注册了它(如下面的代码所示),我会得到一个普通用户的3个字段创建视图,但是如果我扩展ModelAdmin,我会得到我所有的字段,但是不能使用密码更新表单。是404
值得注意的是,对象列表中的链接是“User”,而不是我的模型所称的“CommonUser”,但这可能是某个地方的类meta。在
管理员py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from models import CommonUser, Account, Registry
from django import forms
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = CommonUser
class MyUserCreationForm(UserCreationForm):
password = forms.CharField(
label='Password',
max_length = 32,
required=True,
widget=forms.PasswordInput,
)
password2 = forms.CharField(
label='Confirm',
max_length = 32,
required=True,
widget=forms.PasswordInput,
help_text="Make sure they match!",
)
class Meta(UserCreationForm.Meta):
model = CommonUser
fields = ['username', 'password', 'password2', 'email',
'first_name','last_name','address','city','state','zipcode',
'phone1','phone2',]
help_texts = {
'password': 'Must be at least 8 characters.',
}
def clean_username(self):
username = self.cleaned_data['username']
try:
CommonUser.objects.get(username=username)
except CommonUser.DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate_username'])
class MyUserAdmin(UserAdmin):
form = MyUserChangeForm
add_form = MyUserCreationForm
fieldsets = UserAdmin.fieldsets + (
('Personal info', {'fields': ('address', 'phone1',)}),
)
admin.site.register(CommonUser, MyUserAdmin)
(片段)模型.py
^{pr2}$来源
Extending new user form, in the admin DjangoUsing Django auth UserAdmin for a custom user modelhttps://docs.djangoproject.com/en/1.6/topics/auth/customizing/#a-full-example
用户管理员来自django.contrib.auth公司.admin还设置“add_fieldsets”属性,该属性设置要在“添加用户”视图中显示的字段。因为UserAdmin设置了这个字段,所以您需要覆盖它来设置您自己的字段。在
下面是一个例子:
希望这有帮助!在
相关问题 更多 >
编程相关推荐