Django項目實戰:在線作業管理系統(3)

Django 提供了基於 web 的管理工具。

可通過命令來創建超級用戶:

python manage.py createsuperuser
python manage.py runserver

通過訪問 http://127.0.0.1 :8000/admin 即可進入後臺。

管理頁面的功能強大,可以通過代碼自定義頁面顯示。部分代碼如下:

# project/admin.py

from django.contrib import admin
from .models import *
from django.contrib.auth.models import User
from django.utils.html import format_html

admin.site.site_header = '作業管理系統'
admin.site.site_header = '作業管理系統'
empty_value_display = "空值"
admin_order_field = ('modified',)

class StudentAdmin(admin.ModelAdmin):
    '''設置列表可顯示的字段'''
    list_display = ('name','gender','created','modified',)
    '''設置過濾選項'''
    # list_filter = ('',)
    '''每頁顯示條目數'''
    list_per_page = 5
    '''設置可編輯字段'''
    list_editable = ()
    '''按日期月份篩選'''
    date_hierarchy = 'created'
    '''按發佈日期排序'''
    ordering = ('-created',)
    '''下拉菜單修改'''
    # raw_id_fields = ('',)
    # readonly_fields = ('',)
    '''設置帶鏈接字段'''
    # list_display_links = ('',)
    '''可搜索字段'''
    search_fields = ('name',)
    '''多對多字段'''
    # filter_horizontal = ('',)
admin.site.register(Student, StudentAdmin)

class CourseInline(admin.TabularInline):
    model = Course
    fields = ('cname', 'classes', 'opened',)
class TeacherAdmin(admin.ModelAdmin):
    list_display = ('name','gender','created','modified',)
    list_per_page = 5
    list_editable = ()
    date_hierarchy = 'created'
    ordering = ('-created',)
    inlines = [
        CourseInline,
    ]
    search_fields = ('name',)
admin.site.register(Teacher, TeacherAdmin)

class HomeworkInline(admin.TabularInline):
    model = Homework
    fields = ('title', 'status','group',)
class CourseAdmin(admin.ModelAdmin):
    list_display = ('cname','classes','opened',)
    list_filter = ('opened',)
    list_per_page = 5
    list_editable = ('opened',)
    inlines = [
        HomeworkInline,
    ]
    raw_id_fields = ('teacher',)
    search_fields = ('cname',)
admin.site.register(Course, CourseAdmin)

class HandinInline(admin.TabularInline):
    model = Handin
    fields = ('course','author','score',)
class HomeworkAdmin(admin.ModelAdmin):
    list_display = ('title','status','created','modified','group','handin_count')
    list_filter = ('status','published',)
    list_per_page = 5
    list_editable = ('status',)
    inlines = [
        HandinInline,
    ]
    raw_id_fields = ('course',)
    list_display_links = ('title',)
    date_hierarchy = 'modified'
    ordering = ('-modified',)
    search_fields = ('title',)
    def handin_count(self,obj):
        count = len(obj.handin.all())
        if count:
        	return count
        else:
        	return format_html(
        			'<span style="color:red;">暫無人提交</span>',
        		)
    handin_count.short_description = '已提交作業數量'
    '''自定義actions'''
    actions = ['make_published']
    def make_published(self, request, queryset):
        queryset.update(status='p')

    make_published.short_description = "發佈所選作業"

admin.site.register(Homework, HomeworkAdmin)

直接刷新頁面即可,效果圖如下: 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章