您现在的位置是: 网站首页 >Django >Django2.0.8+xadmin2实现在线学习网站 Django
【Django在线教育平台】22.xadmin的其它常见功能
admin2019年6月4日 14:24 【Django | Html | JQuery 】 1424人已围观
Django2.0.8+xadmin2实现在线学习网站简介 Django2.0.8+xadmin2实现在线学习网站,课程、讲师、机构、用户收藏功能。GitHub地址:https://github.com/xyliurui/OnlineLearningPlatform ;Django版本:2.0.8
## list_editable列表页可编辑 在列表页可以直接编辑的 ```python class CourseAdmin(object): list_display = [ 'name', 'teacher', 'desc', 'students', 'fav_nums', 'click_nums', 'degree', 'learn_times', 'students'] search_fields = ['name', 'desc', 'detail', 'degree', 'students'] list_filter = [ 'name', 'desc', 'detail', 'degree', 'learn_times', 'students'] list_editable = ['degree', 'desc'] ``` ![BLOG_20190604_142459_91](/media/blog/images/2019/06/BLOG_20190604_142459_91.png "博客图集BLOG_20190604_142459_91.png") ## 自定义函数作为列显示 course/models.py中 ```python # 课程信息表 class Course(models.Model): # ..... class Meta: verbose_name = verbose_name_plural = '课程' def get_lesson_nums(self): # 获取课程章节数,如果章节模型中未定义关联名称(related_name)则直接使用字段名_set来获取 return self.lesson_set.all().count() get_lesson_nums.short_description = '章节数' def __str__(self): return self.name ``` course/adminx.py中,`list_display`中添加`get_lesson_nums` ```python # Course的admin管理器 class CourseAdmin(object): list_display = [ 'name', 'teacher', 'desc', 'students', 'fav_nums', 'click_nums', 'degree', 'learn_times', 'students', 'get_lesson_nums'] search_fields = ['name', 'desc', 'detail', 'degree', 'students'] list_filter = [ 'name', 'desc', 'detail', 'degree', 'learn_times', 'students'] list_editable = ['degree', 'desc'] ``` ![BLOG_20190604_142450_96](/media/blog/images/2019/06/BLOG_20190604_142450_96.png "博客图集BLOG_20190604_142450_96.png") ## 显示自定义的html代码 course/models.py中 ```python # 课程信息表 class Course(models.Model): # ..... class Meta: verbose_name = verbose_name_plural = '课程' def get_lesson_nums(self): # 获取课程章节数,如果章节模型中未定义关联名称(related_name)则直接使用字段名_set来获取 return self.lesson_set.all().count() get_lesson_nums.short_description = '章节数' def go_to(self): from django.utils.safestring import mark_safe # mark_safe后就不会转义 return mark_safe("<a href='http://blog.starmeow.cn/'>跳转</a>") go_to.short_description = '跳转' def __str__(self): return self.name ``` course/adminx.py中 ```python # Course的admin管理器 class CourseAdmin(object): list_display = [ 'name', 'teacher', 'desc', 'students', 'fav_nums', 'click_nums', 'degree', 'learn_times', 'students', 'get_lesson_nums', 'go_to'] search_fields = ['name', 'desc', 'detail', 'degree', 'students'] list_filter = [ 'name', 'desc', 'detail', 'degree', 'learn_times', 'students'] list_editable = ['degree', 'desc'] ``` ![BLOG_20190604_142441_66](/media/blog/images/2019/06/BLOG_20190604_142441_66.png "博客图集BLOG_20190604_142441_66.png") ## refresh定时刷新工具 course/adminx.py中 ```python # Course的admin管理器 class CourseAdmin(object): list_display = [ 'name', 'teacher', 'desc', 'students', 'fav_nums', 'click_nums', 'degree', 'learn_times', 'students', 'get_lesson_nums', 'go_to'] search_fields = ['name', 'desc', 'detail', 'degree', 'students'] list_filter = [ 'name', 'desc', 'detail', 'degree', 'learn_times', 'students'] list_editable = ['degree', 'desc'] refresh_time = [3, 5] ``` 后台效果: 可以选择3s或者5s自动刷新页面 ## 字段联动 应用场景:当添加一门课程的时候,希望课程机构里面的课程数 +1 重写xadmin的save_models方法 ```python # Course的admin管理器 class CourseAdmin(object): list_display = [ 'name', 'teacher', 'desc', 'students', 'fav_nums', 'click_nums', 'degree', 'learn_times', 'students', 'get_lesson_nums', 'go_to'] search_fields = ['name', 'desc', 'detail', 'degree', 'students'] list_filter = [ 'name', 'desc', 'detail', 'degree', 'learn_times', 'students'] list_editable = ['degree', 'desc'] refresh_time = [3, 5] def save_models(self): # 在保存课程的时候统计课程机构的课程数 # obj实际是一个course对象 obj = self.new_obj # 如果这里不保存,新增课程,统计的课程数会少一个 obj.save() # 确定课程的课程机构存在。 if obj.course_org is not None: # 找到添加的课程的课程机构 course_org = obj.course_org # 课程机构的课程数量等于添加课程后的数量 course_org.course_nums = Course.objects.filter(course_org=course_org).count() course_org.save() ``` # 增加富文本编辑器Ueditor 未完成
很赞哦! (0)
相关文章
文章交流
- emoji
当前用户
未登录,点击 登录专题目录
- 【Django在线教育平台】01.创建Django虚拟环境和项目
- 【Django在线教育平台】02.创建该项目用到的数据库模型类
- 【Django在线教育平台】03.xadmin后台系统配置,将models注册到xadmin中
- 【Django在线教育平台】04.模板配置,完成用户登录相关页面和逻辑
- 【Django在线教育平台】05.用户注册功能实现
- 【Django在线教育平台】06.找回密码,实现忘记密码及重置密码功能
- 【Django在线教育平台】07.授课机构列表显示,分页、分类筛选、排序功能
- 【Django在线教育平台】08.学习咨询表单ajax提交
- 【Django在线教育平台】09.机构详情、机构课程详情页
- 【Django在线教育平台】10.机构讲师、机构介绍详情页
- 【Django在线教育平台】11.机构收藏功能实现
- 【Django在线教育平台】12.课程列表及详情展示
- 【Django在线教育平台】13.课程内容页,该课程评论功能
- 【Django在线教育平台】14.用户登陆后开始学习,播放课程视频
- 【Django在线教育平台】15.授课讲师列表和详情功能
- 【Django在线教育平台】16.导航选中状态,全局搜索功能实现
- 【Django在线教育平台】17.个人中心用户修改密码、头像
- 【Django在线教育平台】18.个人中心修改邮箱及其他信息
- 【Django在线教育平台】19.个人中心显示我的课程、收藏、消息页面
- 【Django在线教育平台】20.用户退出功能
- 【Django在线教育平台】21.其他功能完善
- 【Django在线教育平台】22.xadmin的其它常见功能