在Django Admin界面的用户名中允许使用“-”字符

在Django Admin界面的用户名中允许使用“-”字符,第1张

在Django Admin界面的用户名中允许使用“-”字符

这应该像覆盖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应用。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5649328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存