学生管理系统模型修改.py文件的方法及方法
优采云 发布时间: 2021-07-24 04:01学生管理系统模型修改.py文件的方法及方法
在上一篇文章中,我们已经初步构建了学生管理系统的模型,现在让我们继续完善它。
1、上传图片/文件等资源
有时需要添加一些附件。比如大一新生刚入学,大家都不熟。希望用照片加深印象,方便教学管理。
首先修改demo/urls.py文件,在urlpatterns中添加static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT):
from django.conf.urls.static import static
from djproject import settings
urlpatterns = [
path('xadmin/', xadmin.site.urls),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
然后在demo/settings.py文件中添加
#===student===
# 指定上传位置
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)filter
今年学校录取率爆满,生源特别好。要在数据库中找到相应的学生,您必须使用搜索功能。
修改adminx.py文件,在StudentsAdmin类中添加:
search_fields = ('name',)
如果我们要按班级或学科查找该班级的所有学生或该学科的选修课,方法是否相同?我们先试试:
search_fields = ('name', 'class_name', 'subjects',)
这里发生了什么?原来我们搜索到的“class”和“discipline”这两个字段是外键,另一个是多对多的关系。 Student模型中的两个字段名不是它们的实际名称,还有“__”两个下划线,然后加上外键或者多对多关系的实际字段名:
search_fields = ('name','class_name__class_name', 'subjects__name')
现在一切都准备好了。
2)过滤器:
如果只想查看student表中男生或女生的信息,那么使用过滤功能:
修改adminx.py文件,在StudentsAdmin类中添加:
list_filter = ('sex',)
3)排序:
如果我们想让学生按照某个字段的顺序排序,还需要在adminx.py文件中的StudentsAdmin类中添加排序选项:
# 顺序排序
ordering = ('age','name')
#逆序排序,在前面加一个减号“-”, 例如按年龄倒序排序
ordering = ('-age',)
这意味着同时按年龄和姓名字段排序。
二、custom网站信息
我们要在网站登录时显示站点名称,修改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类中添加
好了,结束了,Xadmin入口到此结束
转载原文:
内容仿照这位博主学习,感谢这位博主