【Python3.6+Django2.0+Xadmin2.0系列教程之三(入門篇-下)】學生信息管理系統


上一篇我們已經初步的構建起了一個學生管理系統的模型,現在接着來繼續完善它吧。


 

 轉載請注明出處:https://www.cnblogs.com/v88v/p/8909845.html

 

1、上傳圖片/文件等資源

有時候需要添加一些附件,例如,新生剛入學,大家相互之間還不熟悉,希望能通過照片來加深印象,並且方便教學管理。

首先,對demo/urls.py文件進行改造,給urlpatterns添加static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT):

urlpatterns = [
    path(r'', xadmin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

然后在demo/settings.py文件中添加

# 指定上傳位置
LOCATION = os.path.join('/', 'Users', 'babybus')
# 媒體文件根目錄
MEDIA_ROOT
= os.path.join(LOCATION, 'Media') ROOT_URL = '/' MEDIA_URL = '/media/'

 

上傳圖片涉及到路徑的獲取,在models.py文件中導入os模塊

import os

在models.py文件的Students類中添加一個路徑獲取的方法及models.ImageField字段:

def get_photo(self, filename):
    return os.path.join('photo', '%s_%s_%s_%s' % (self.class_name, self.name, self.id, os.path.splitext(filename)[1]))
photo = models.ImageField(verbose_name='照片', upload_to=get_photo, blank=True, null=True)

同時同步一下數據庫操作,這樣頁面就多出一個照片上傳的選項了,選擇好照片並保存:

 

2、篩選、過濾、排序

1)篩選

今年學校的錄取率爆滿,生源特別好,要在一個數據庫中找到對應的學生,必然需要用到搜索功能。

修改adminx.py文件,在StudentsAdmin類中添加:

search_fields = ('name', )

 

要是我們想通過班級或者學科來查找這個班級或者選修這門學科的所有學生,方法還會是一樣的嗎?我們先試試:

search_fields = ('name', 'class_name', 'subjects',)

結果,報錯了:

這是怎么回事呢?原來,我們搜的“班級”和“學科”這兩個字段一個是外鍵一個是含有多對多關系,Student模型中的這兩個字段名稱並不是其實際名稱,要在字段后加“__”兩個下划線,然后再添加外鍵或多對多關系實際的字段名:

search_fields = ('name', 'class_name__class_name', 'subjects__name',)

現在妥妥的了。

2)過濾:

如果只想查看學生表中的男生或者女生的信息,那就用到了過濾功能:

修改adminx.py文件,在StudentsAdmin類中添加:

list_filter = ('sex',)

 

3)排序:

如果想讓學生按某字段的順序來排序,同樣我們需要在adminx.py文件中的StudentsAdmin類中添加ordering選項:

# 順序排序
ordering = ('age', 'name', )

# 逆序排序,在前面加一個減號"-",例如按年齡倒序排列

ordering = ('-age',)

這表示同時按照年齡和姓名字段來排序。

 

二、定制網站信息

我們希望登錄網站的時候,顯示站點的名稱,修改adminx.py文件,添加LoginViewAdmin類,並注冊:

 

from xadmin.views.website import LoginView

class LoginViewAdmin(LoginView):
    title = '學生信息管理系統'


xadmin.site.register(LoginView, LoginViewAdmin)

 

 

 

 

 

還可以繼續修改,例如瀏覽器標題和左上角的網頁標題以及頁腳的版權信息:

from xadmin.views import CommAdminView
class GlobalSetting(CommAdminView):
    # 左上角及瀏覽器標題
    site_title = '學生信息管理系統'
    # 頁腳版權信息
    site_footer = 'Copyright © 2018 寶寶巴士'


xadmin.site.register(CommAdminView, GlobalSetting)

 

 

 左側邊欄如果以后項目越來越多了,有一個歸類會更好看些,也方便管理操作。這就需要在GlobalSetting類中添加

menu_style = 'accordion'

 轉載請注明出處:https://www.cnblogs.com/v88v/p/8909845.html

 

Xadmin入門就到此為止吧,在后續的博文中我會繼續深入講解Django+Xadmin的進階用法和操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM