取消 settings.py 中 INSTALLED_APPS 中 admin 注释
'django.contrib.admin',
html
使用south管理数据库python
python manage.py schemamigration polls --auto python manage.py migrate polls
设置 mysite/urls.py
数据库
from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', ... url(r'^admin/', include(admin.site.urls)),
启动服务器
python manage.py runserver
访问地址 http://127.0.0.1:8000/admin/django
增长 polls/admin.py服务器
from django.contrib import admin from polls.models import Poll admin.site.register(Poll)
定制管理界面(更改顺序)app
a. 定义一个ModelAdmin类对象 b. 把该对象做为注册的第2个参数 class PollAdmin(admin.ModelAdmin): fields = ['pub_date', 'question'] admin.site.register(Poll, PollAdmin)
定制管理界面(分组)python2.7
class PollAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question']}), ('Date information', {'fields': ['pub_date']}), ]
定制管理界面(折叠)url
class PollAdmin(admin.ModelAdmin): ... ('日期信息', {'fields': ['pub_date'], 'classes': ['collapse']}),
内联方式code
from django.contrib import admin from polls.models import Choice, Poll class ChoiceInline(admin.StackedInline): model = Choice extra = 3 class PollAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question']}), ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), ] inlines = [ChoiceInline] admin.site.register(Poll, PollAdmin)
表格方式orm
class ChoiceInline(admin.TabularInline):
普通显示多列
class PollAdmin(admin.ModelAdmin): # ... list_display = ('question', 'pub_date', 'was_published_recently')
方法设置属性
was_published_recently.admin_order_field = 'pub_date' was_published_recently.boolean = True was_published_recently.short_description = '是否最近发布'
增长一个过滤器
list_filter = ['pub_date']
增长搜索栏
search_fields = ['question']
日期分层过滤
date_hierarchy = 'pub_date'
完整的 PollAdmin 类
class PollAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question']}), ('日期信息', {'fields': ['pub_date'], 'classes': ['collapse']}), ] inlines = [ChoiceInline] list_display = ('question', 'pub_date', 'was_published_recently') list_filter = ['pub_date'] search_fields = ['question'] date_hierarchy = 'pub_date'
1.1 django 的源文件在哪里?
python -c " import sys sys.path = sys.path[1:] import django print(django.__path__)"
好比个人 virtualenvs 环境的django 的输出结果就是:
~/.virtualenvs/djtest/local/lib/python2.7/site-packages/django
1.2 创建一个项目模版目录并拷贝模版
在项目目录创建一个模版路径 templates,如今路径结果:
~/djtest/mysite |---mysite |---polls | |---migrations |---templates | |---admin
从~/.virtualenvs/djtest/local/lib/python2.7/site-packages/django/contrib/admin/templates/admin
cp base_site.html ~/djtest/mysite/templates/admin/
1.3 更改 settings.py,增长模版的搜索路径
TEMPLATE_DIRS = ( '/home/***/djtest/mysite/templates/' )