我成功地扩展了一些管理模型和表单,但我不确定如何保持我的文件树干净。
如果我放在forms.py
与 相同的级别admin.py
,则一切正常:
表格.py
class MyUserCreationForm(UserCreationForm):
#...
class MyUserChangeForm(UserChangeForm):
#...
管理员.py
from myapp.forms import MyUserCreationForm, MyUserChangeForm
文件树
mypackage/
admin.py
forms.py
现在,为了将我的管理员相关表单与其他表单分开并使代码更清晰,我添加了一个文件夹admin
来放置与管理员相关的表单。在那种情况下,URL 似乎被弄乱了。转到 /myapp/admin/ 时,我得到默认管理页面,而不是我在 admin.py 中自定义的页面。
管理员/forms.py
class MyUserCreationForm(UserCreationForm):
#...
class MyUserChangeForm(UserChangeForm):
#...
管理员.py
from myapp.admin.forms import MyUserCreationForm, MyUserChangeForm
文件树
mypackage/
admin.py
admin/
forms.py
我猜系统很困惑,因为 admin 既是文件又是文件夹。在 Django 中保留自定义管理相关文件的标准方法是什么?
编辑admin.py
:在上面显示的情况下,文件夹之间存在冲突admin
。我试图把admin.py
和forms.py
放在一个文件夹中,但它仍然不起作用:
管理员/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
网址.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)),
)