これは、User ModelAdminクラスの動作をオーバーライドするだけで簡単です。いずれかのアプリでは、admin.py
に次のコードが含まれています。
from django.contrib import admin
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
class 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 = MyUserCreationForm
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
ここでは少し説明します。
最初のクラス定義(MyUserCreationForm)は、UserCreationFormのサブクラスです(専門用語が正しい)。これは、Django管理者サイトの「ユーザの追加」をクリックすると表示されるフォームです。ここでは、username
フィールドを改良したハイフンを受け入れる正規表現を使用して再定義し、これを反映するようにhelptext
を変更しています。
2番目のクラス定義は、UserChangeFormを除いて同じです。
最終的なクラス定義はUserAdminのサブクラスで、UserAdminがデフォルトで使用するModelAdminです。ここでは、ModelAdminで新しいカスタムフォームを使用したいと述べています。
これらのサブクラスごとに、私たちが持つものを変更するだけであることに注意してください。残りのクラスは親から継承されます(それぞれUserCreationForm、UserChangeForm、およびUserAdmin)。
最後に、管理者サイトにUserモデルを登録する重要な手順を実行します。これを行うために、デフォルトのUserAdminの登録を解除して、改良されたMyUserAdminクラスに登録します。
Djangoの管理サイトは、管理サイトが通常のDjangoアプリケーションであることを考慮すると、これらの手法を使用して簡単にカスタマイズできます。
sixgearさん、ありがとうございました、それは私にはたくさんの意味があります、詳細な説明を書く時間をとっていただきありがとうございます。 –
非常に良い説明。 –