目录
13.1 将userProfile 用户信息全览注册到xadmin中
13.1 将userProfile 用户信息全览注册到xadmin中
users.xadmin
from xadmin.plugins.auth import UserAdmin
from .models import EmailVerifyRecord,Banner,UserProfile
class UserProfileAdmin(UserAdmin):
pass
'''
要先将UserProfile卸载否则会出现以下错误
xadmin.sites.AlreadyRegistered: The model UserProfile is already registered
'''
xadmin.site.unregister(UserProfile)#
xadmin.site.register(UserProfile,UserProfileAdmin)
13.3 后台管理:
在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 = 0
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为只读后台不可更改
'''
当前数据表作为其他数据表外键时,可以将其他数据表注册到当前数据表的inlines中
这样在后台管理xadmin中就可以在配置当前数据表时就一起配置其他将当前数据表作为外键的数据表
注意:
1、这样的配置不可层叠多个,只能有上下两层
2、一个数据表可以同时将多个将其作为外键的数据表一起配置
'''
inlines = [LessonInline,CourseResourceInline]
13.4 将一个数据表在后台通过筛选 注册成多个数据表,注意好像只能筛选 bool类型的文件
http://www.cnblogs.com/derek1184405959/p/8682250.html
13.5后台富文本编辑器
地址: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 xadmin
from xadmin.views import BaseAdminPlugin, CreateAdminView, ModelFormAdminView, UpdateAdminView
from DjangoUeditor.models import UEditorField
from DjangoUeditor.widgets import UEditorWidget
from django.conf import settings
class 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 = '<script type="text/javascript" src="%s"></script>' %(settings.STATIC_URL + "ueditor/ueditor.config.js")
js += '<script type="text/javascript" src="%s"></script>' %(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的自动转义才能正常显示
<div class="tab_cont tab_cont1">
{% autoescape off %}
{{ course.detail }}
{% endautoescape %}
</div>
(9)插件xadmin下面某个文件夹中的width和height参数会报错,直接删除所有和这两个参数相关的代码就OK了
13.6excel导入插件