这应该像覆盖User ModelAdmin类的行为一样简单。在您的一个应用程序中,
admin.py包括以下代码。
from django.contrib import adminfrom django import formsfrom django.contrib.auth.models import Userfrom django.contrib.auth.admin import UserAdminfrom django.contrib.auth.forms import UserCreationForm, UserChangeFormclass MyUserCreationForm(UserCreationForm): username = forms.RegexField( label='Username', max_length=30, regex=r'^[w-]+$', help_text = 'Required. 30 characters or fewer. Alphanumeric characters only (letters, digits, hyphens and underscores).', error_message = 'This value must contain only letters, numbers, hyphens and underscores.')class MyUserChangeForm(UserChangeForm): username = forms.RegexField( label='Username', max_length=30, regex=r'^[w-]+$', help_text = 'Required. 30 characters or fewer. Alphanumeric characters only (letters, digits, hyphens and underscores).', error_message = 'This value must contain only letters, numbers, hyphens and underscores.')class MyUserAdmin(UserAdmin): form = MyUserChangeForm add_form = MyUserCreationFormadmin.site.unregister(User)admin.site.register(User, MyUserAdmin)
这是一些解释。
第一个类定义(MyUserCreationForm)是UserCreationForm的子类(是的,您的术语是正确的)。这是您在Django
Admin网站中单击“添加用户”时显示的形式。我们在这里所做的所有工作都是重新定义
username字段,以使用经过改进的,可以接受连字符的正则表达式,并更改
helptext来反映这一点。
第二个类定义执行相同的 *** 作,除了UserChangeForm。
最终的类定义是UserAdmin的子类,它是User模型默认使用的ModelAdmin。在这里,我们声明要在ModelAdmin中使用新的自定义表单。
请注意,对于这些子类中的每个子类,我们仅需更改。该类的其余部分将从其父级继承(分别为UserCreationForm,UserChangeForm和UserAdmin)。
最后,我们执行了向管理站点注册用户模型的重要步骤。为此,我们取消注册默认的UserAdmin,然后向改进的MyUserAdmin类注册。
您会发现使用这些技术可以很容易地自定义Django管理站点,尤其是考虑到该管理站点只是一个常规的Django应用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)