【发布时间】:2012-12-13 12:37:36
【问题描述】:
我成功扩展了一些管理模型和表单,但我不确定如何保持我的文件树干净。
如果我将forms.py 与admin.py 放在同一级别,则一切正常:
forms.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
我猜系统很混乱,因为 admin 既是文件又是文件夹。在 Django 中保留自定义管理相关文件的标准方法是什么?
编辑:在上面显示的情况下,admin.py 和文件夹admin 之间存在冲突。我试着把admin.py和forms.py放到一个文件夹里,还是不行:
admin/forms.py
class MyUserCreationForm(UserCreationForm):
#...
class MyUserChangeForm(UserChangeForm):
#...
admin/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)),
)
【问题讨论】:
-
您是否收到错误消息?如果有,是什么?
-
网址看起来很乱。转到
<myurl>/myapp/admin/时,我得到的是默认管理页面,而不是我在admin.py中自定义的页面。