本文共 4427 字,大约阅读时间需要 14 分钟。
目录
users.xadmin
from xadmin.plugins.auth import UserAdminfrom .models import EmailVerifyRecord,Banner,UserProfileclass UserProfileAdmin(UserAdmin): pass'''要先将UserProfile卸载否则会出现以下错误xadmin.sites.AlreadyRegistered: The model UserProfile is already registered'''xadmin.site.unregister(UserProfile)#xadmin.site.register(UserProfile,UserProfileAdmin)
在courses.xadmin.py
class CourseAdmin(object): list_display = ['name','desc','detail','degree','learn_times','student','fav_nums','image','click_nums','add_time'] list_filter = ['name','desc','detail','degree','learn_times','student','fav_nums','image','click_nums','add_time'] search_fields = ['name','desc','detail','degree','student','fav_nums','image','click_nums'] ordering = ['-click_nums']#后台显示时,按照点击数进行倒序排列 readonly_fields = ['click_nums']#设置click_nums为只读后台不可更改
将外键下拉改为搜索模式:
class CourseOrgAdmin(object):#课程机构 list_display = ["name", "desc", "click_nums","fav_nums","img","address","city","add_time"] list_filter =["name", "desc", "click_nums","fav_nums","img","address","city__name","add_time"] search_fields =["name", "desc", "click_nums","fav_nums","img","address","city__name"] relfield_style = 'fk-ajax'#当CourseOrg作为其他字段的外键的时候,在后台其他数据表不再使用下拉的方式选择此数据表,而是搜索的方式出现
后台配置:某个数据表,当其他数据表将其作为外键时,可以将其他数据表注册经inlines方便后台在配置当前数据表是客体同时配置其他数据表
class LessonInline(object): model = Lesson extra = 0 class CourseResourceInline(object): model = CourseResource extra = 0class CourseAdmin(object): list_display = ['name','desc','detail','degree','learn_times','student','fav_nums','image','click_nums','add_time'] list_filter = ['name','desc','detail','degree','learn_times','student','fav_nums','image','click_nums','add_time'] search_fields = ['name','desc','detail','degree','student','fav_nums','image','click_nums'] ordering = ['-click_nums']#后台显示时,按照点击数进行倒序排列 readonly_fields = ['click_nums']#设置click_nums为只读后台不可更改 ''' 当前数据表作为其他数据表外键时,可以将其他数据表注册到当前数据表的inlines中 这样在后台管理xadmin中就可以在配置当前数据表时就一起配置其他将当前数据表作为外键的数据表 注意: 1、这样的配置不可层叠多个,只能有上下两层 2、一个数据表可以同时将多个将其作为外键的数据表一起配置 ''' inlines = [LessonInline,CourseResourceInline]
13.4 将一个数据表在后台通过筛选 注册成多个数据表,注意好像只能筛选 bool类型的文件
地址:https://github.com/twz915/DjangoUeditor3/
解压后,
直接cd到当前文件夹下python setup.py 安装(注意要转到虚拟环境下安装)
注意:直接pip install DjangoUeditor的方法会出问题
(2)settings中添加app
INSTALLED_APPS = [ 'DjangoUeditor',]
(3)MxOnline/urls.py
# 富文本编辑器url path('ueditor/',include('DjangoUeditor.urls' )),
(4)course/models.py中Course修改detail字段
class Course(models.Model): # detail = models.TextField("课程详情") detail = UEditorField(verbose_name=u'课程详情', width=600, height=300, imagePath="courses/ueditor/", filePath="courses/ueditor/", default='')
(5)xadmin/plugs目录下新建ueditor.py文件,代码如下
import xadminfrom xadmin.views import BaseAdminPlugin, CreateAdminView, ModelFormAdminView, UpdateAdminViewfrom DjangoUeditor.models import UEditorFieldfrom DjangoUeditor.widgets import UEditorWidgetfrom django.conf import settingsclass XadminUEditorWidget(UEditorWidget): def __init__(self, **kwargs): self.ueditor_options = kwargs self.Media.js = None super(XadminUEditorWidget,self).__init__(kwargs)class UeditorPlugin(BaseAdminPlugin): def get_field_style(self, attrs, db_field, style, **kwargs): if style == 'ueditor': if isinstance(db_field, UEditorField): widget = db_field.formfield().widget param = {} param.update(widget.ueditor_settings) param.update(widget.attrs) return {'widget':XadminUEditorWidget(**param)} return attrs def block_extrahead(self, context, nodes): js = '' %(settings.STATIC_URL + "ueditor/ueditor.config.js") js += '' %(settings.STATIC_URL + "ueditor/ueditor.all.min.js") nodes.append(js)xadmin.site.register_plugin(UeditorPlugin, UpdateAdminView)xadmin.site.register_plugin(UeditorPlugin, CreateAdminView)
(6)xadmin/plugs/__init__.py里面添加ueditor插件
PLUGINS = ( 'ueditor',)
(7)course/adminx.py中使用
class CourseAdmin(object): #detail就是要显示为富文本的字段名 style_fields = {"detail": "ueditor"}
(8)course-detail.html
在模板中必须关闭Django的自动转义才能正常显示
{% autoescape off %} { { course.detail }} {% endautoescape %}
(9)插件xadmin下面某个文件夹中的width和height参数会报错,直接删除所有和这两个参数相关的代码就OK了
13.6excel导入插件
转载地址:http://irnvb.baihongyu.com/