管理介面的使用
管理介面的URL,帳號和密碼在第一次輸入syncdb時建立
http://127.0.0.1:8000/admin/
將app加入管理介面
編輯polls/admin.py
from django.contrib import admin
from polls.models import Poll
admin.site.register(Poll)
定製管理表格
#改變順序
from django.contrib import admin
from polls.models import Poll
class PollAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question']
admin.site.register(Poll, PollAdmin)
#新增域框,classes的值collapse表示預設緊縮
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
新增關聯物件
再新增poll的時候新增choice,而不是將choice做為單獨一項進行新增
TabularInline和StackedInline對應,是做為表格的緊緻表現形式。
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)
自定義管理員變更列表
不僅能顯示列,還能顯示成員函式的值,但是成員函式的值是無法排序的。
class PollAdmin(admin.ModelAdmin):
# ...
list_display = ('question', 'pub_date', 'was_published_recently')
如下可設定成員函式的顯示名稱,以及按哪一可排序屬性排序
class Poll(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'
新增過濾與搜尋功能
list_filter = ['pub_date']
search_fields = ['question']
定製專案、管理主頁模版
專案、應用模版的位置可在settings中做相應設定。
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
預設的模版檔案位於django的庫目錄(django/contrib/admin/template
s),可用如下命令查詢django的目錄。
python -c "
import sys
sys.path = sys.path[1:]
import django
print(django.__path__)"
專案的預設模版為admin/base_site.html,主頁的模版為admin/index.html,複製到自己的模版目錄後修改即可。