xadmin是Django后台管理系统admin的一个替换方案,xadmin对admin做了一些扩展。界面上有些操作会更方便。比如xadmin自带了导出功能,可以导出excel,csv,json等格式的文档。
这里介绍下xadmin一些简单的使用,以及常用的与admin不同的地方。
1. 安装
首先,我的环境是:python3.6,django2.0
如果直接使用pip install xadmin会报错,因为这样安装默认对应的django版本是1.4的(印象中)。所以我们需要安装xadmin项目django2分支的代码。命令如下:
pip install git+git://github.com/sshwsfc/xadmin.git@django2
或使用https的地址安装:
pip install git+https://github.com/sshwsfc/xadmin.git@django2
注意,由于上述命令用到了Git工具,所以请安装Git工具后再执行上述命令(安装Git后可能需要重启电脑才能生效)。
另外,如果上述命令行方式较慢,也可直接下载分支的代码,再安装:
- 进入xadmin项目django2的分支
- 点击页面上的Download ZIP,下载zip包到本地
- 执行命令安装:
pip install --cache-dir . d:\xadmin-django2.zip(请自行替换)
2. 配置
在Django项目中做如下配置
1)项目setting.py配置文件中,INSTALLED_APPS中添加:
INSTALLED_APPS = [
...
'xadmin',
'crispy_forms',
'reversion',
]
2)在项目工程的根urls.py中,添加:
import xadmin
xadmin.autodiscover()
from xadmin.plugins import xversion
xversion.register_models()
urlpatterns = [
path(r'', xadmin.site.urls)
]
3)创建xadmin相关的表
配置完xadmin后,需运行一下python manage.py migrate
,创建xadmin相关的数据库表。
3. xadmin.py中注册模型
现在替换掉原应用中的admin的内容。注释掉admin.py中的内容,然后在应用路径下新增xadmin.py文件,添加如下代码,注册Device模型(已在model.py中先创建Device模型)。
以下代码中的显示,排序,筛选器等相关的设置都与admin中一样。
注意:admin.py中DeviceAdmin是继承admin.ModelAdmin,而xadmin.py中需改为object。
class DeviceAdmin(object):
readonly_fields = ('date',)
list_display = ['id', 'device_name', 'area_company', 'site', 'device_id', 'device_type', 'account', 'password']
list_display_links = ('id', 'device_name',)
ordering = ('id',)
# 筛选器
search_fields = ('area_company__name', 'site__site', 'device_name', 'device_id') # 搜索字段
list_filter = ('device_type', 'supplier', 'device_model', 'responsible_by')
xadmin.site.register(Device, DeviceAdmin)