django-admin文档:https://xadmin.readthedocs.io/en/latest/index.html
目录:
1、xadmin基本配置
2、配置后台显示的模型类
3、后台注册模型类
4、修改后台应用、字段显示的名字
5、修改应用在后台显示的名字
6、修改admin后台显示的图标,如应用的图标和表的图标。
7、自定义user用户管理
8、后台显示数据库中不存在的字段
9、save_models 和 delete_model
安装最新的xadmin
pip install https://github.com/sshwsfc/xadmin/tarball/master
在django中注册xadmin应用
# 安装 xadmin 以下三个 应用
\'xadmin\',
\'crispy_forms\',
\'reversion\',
添加路由
# 注释掉 django 自带的 admin路由
# url(r\'^admin/\', admin.site.urls),
url(r\'xadmin/\', include(xadmin.site.urls)),
编写adminx.py 文件
1、配置基本信息
class BaseSetting(object):
"""xadmin的基本配置"""
enable_themes = True # 开启主题切换功能
use_bootswatch = True
class GlobalSettings(object):
"""xadmin的全局配置"""
site_title = "xx运营管理系统" # 设置站点标题
site_footer = "xx科技有限公司" # 设置站点的页脚
menu_style = "accordion" # 设置菜单折叠
xadmin.site.register(views.CommAdminView, GlobalSettings)
xadmin.site.register(views.BaseAdminView, BaseSetting)
2、配置后台显示的模型类
"""
list_display 控制列表展示的字段
search_fields 控制可以通过搜索框搜索的字段名称,xadmin使用的是模糊查询
list_filter 可以进行过滤操作的列
ordering 默认排序的字段
readonly_fields 在编辑页面的只读字段
exclude 在编辑页面隐藏的字段
list_editable 在列表页可以快速直接编辑的字段
show_detail_fileds 在列表页提供快速显示详情信息
refresh_times 指定列表页的定时刷新
list_export 控制列表页导出数据的可选格式
show_bookmarks 控制是否显示书签功能
data_charts 控制显示图标的样式
model_icon 控制菜单的图标
"""
# Objects 模型类名
class ObjectsAdminModel(object):
# def save_model
list_display = [\'name\',\'create_date\',\'update_date\',\'verified_reason\',\'is_delete\',\'categry\',\'title\',\'image\',\'location\']
list_filter= [\'location\',\'categry\']
# data_charts= \'drivers-license-o\'
search_fields = [\'id\', \'name\']
# model_icon = \'fa fa-user-o\'
list_editable = [\'name\']
3、后台注册模型类
xadmin.site.register(views.Objects, ObjectsAdminModel)
4、修改后台应用、字段显示的名字
# 在 django的models.py 文件中
class classname(models.Model):
name = models.CharField(max_length=20,unique=True,verbose_name=\'字段名字\')
class Meta:
db_table = \'table name\' # 数据库中以这个名字创建数据表
verbose_name = \'表名\' # 后台显示的表名
verbose_name_plural = \'表名\' # 后台显示的表名复数 英语复数是加s 这里我们写死为 要显示的表名
5、修改应用在后台显示的名字
# 在 应用模块下的apps.py 文夹下
class xxxConfig(AppConfig):
name = \'xxx\'
verbose_name = \'xx信息\'
# 应用 下的 __init__.py 文件
default_app_config = "应用.apps.应用Config" # 应用的路径
6、修改admin后台显示的图标,如应用的图标和表的图标。
去到这个网站下载最新的图标文件 http://fontawesome.dashgame.com/
替换xadmin的原来的图标文件
修改xadmin的图标文件
去到 http://fontawesome.dashgame.com/ 找到合适的图标样式 点击 图标边上的 复制按钮 复制图标的css样式名字
Django的adminx.py 文件中修如下
model_icon = \'fa 复制来的css样式名字\'
修改完后xadmin后台样式
比原来的圆圈 图标好看多了
7、最后关于user 应用 Django是自带用户管理的,xadmin也会自动注册user,若要自定义用户模型类,需要在xadmin 注销user再注册,后台才会显示新注册的user模型类,没注销就注册user会报错
先注销后注册
xadmin.site.unregister(User)
xadmin.site.register(User, UserAdmin)
import xadmin
# Register your models here.
from .models import User
from xadmin.plugins import auth
class UserAdmin(auth.UserAdmin):
list_display = [\'id\', \'username\', \'mobile\', \'email\', \'date_joined\']
readonly_fields = [\'last_login\', \'date_joined\']
search_fields = (\'username\', \'first_name\', \'last_name\', \'email\', \'mobile\')
style_fields = {\'user_permissions\': \'m2m_transfer\', \'groups\': \'m2m_transfer\'}
def get_model_form(self, **kwargs):
if self.org_obj is None:
self.fields = [\'username\', \'mobile\', \'is_staff\']
return super().get_model_form(**kwargs)
xadmin.site.unregister(User)
xadmin.site.register(User, UserAdmin)
8、后台显示模型类不存在的字段。
需求如下:订单信息中显示商品,但是我们知道订单和订单中的商品是分开两个表储存的,通过外键关联起来。那如何在订单信息中显示所包含的商品呢?
一、在订单中再添加一个字段,保存该订单所有商品的简单信息。
二、不修改数据库字段,而是在后台显示时多显示一字段(显示改订单的所有商品的基本信息)
第二种方法的代码如下:自定义一个显示字段(get_goods),该字段必须为只读(readonly_fields)才会显示出来。
class OrdersAdminModel(object):
def get_goods(self,obj):
goods_queryset = obj.ordergoods_set.all()
return str(["商品%s:%s 单价:%s 元"%(i.goods.id,i.goods.name,i.goods.price) for i in goods_queryset])
get_goods.short_description = \'购买的商品\'
list_display = [\'order_id\',\'user\',\'status\',\'get_goods\']
readonly_fields = ("order_id",\'get_goods\')
9、django自带的admin是有save_models和delete_model的,后台修改模型类后就会执行改函数,xadmin中如下
def save_models(self):
#新的对象
obj = self.new_obj
#可以在这里面写些逻辑
# 保存该对象
obj.save()
def delete_model(self):
# 删除数据对象
obj = self.obj
#相应的操作
obj.delete()
---------------------
作者:bugMakeer
来源:CSDN
原文:https://blog.csdn.net/p571912102/article/details/82180034
版权声明:本文为博主原创文章,转载请附上博文链接!