一部の管理モデルとフォームの拡張に成功しましたが、ファイル ツリーをきれいに保つ方法がわかりません。
forms.py
と同じレベルに置くとadmin.py
、すべてが完全に機能します。
フォーム.py
class MyUserCreationForm(UserCreationForm):
#...
class MyUserChangeForm(UserChangeForm):
#...
admin.py
from myapp.forms import MyUserCreationForm, MyUserChangeForm
ファイルツリー
mypackage/
admin.py
forms.py
ここで、管理関連のフォームを他のフォームから分離し、コードを簡潔にするために、管理関連のフォームを配置するフォルダーを追加しましたadmin
。その場合、URL がおかしくなっているようです。/myapp/admin/ に移動すると、admin.py でカスタマイズしたページではなく、デフォルトの管理ページが表示されます。
admin/forms.py
class MyUserCreationForm(UserCreationForm):
#...
class MyUserChangeForm(UserChangeForm):
#...
admin.py
from myapp.admin.forms import MyUserCreationForm, MyUserChangeForm
ファイルツリー
mypackage/
admin.py
admin/
forms.py
管理者はファイルとフォルダーの両方であるため、システムが混乱していると思います。カスタムの管理者関連ファイルを Django に保持する標準的な方法は何ですか?
EDIT : 上記の場合、admin.py
と folderの間に競合がありますadmin
。をフォルダーに入れようとしadmin.py
ましforms.py
たが、まだ機能しません。
admin/forms.py
class MyUserCreationForm(UserCreationForm):
#...
class MyUserChangeForm(UserChangeForm):
#...
管理者/admin.py
from myapp.admin.forms import MyUserCreationForm, MyUserChangeForm
class MyUserAdmin(UserAdmin):
form = MyUserChangeForm
add_form = MyUserCreationForm
list_filter = ()
fieldsets = (
(None, {'fields': ('username', 'number', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff',)}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'number', 'password1', 'password2')}
),
)
admin.site.register(MyUser, MyUserAdmin)
ファイルツリー
mypackage/
admin/
forms.py
admin.py
urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)