Xadmin操作心得,持续更新!

Django外键约束管理
# django中models加入models.ForeignKey的字段中,在外键放加入 on_delete= 可以有以下效果

# on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值

# CASCADE:此值设置,是级联删除。

# PROTECT:此值设置,是会报完整性错误。

# SET_NULL:此值设置,会把外键设置为null,前提是允许为null。

# SET_DEFAULT:此值设置,会把设置为外键的默认值。

# SET():此值设置,会调用外面的值,可以是一个函数。


#一般情况下使用CASCADE就可以了。
Xadmin添加小组件报错
# xadmin 报错 TypeError: render() got an unexpected keyword argument 'renderer'

# 解决方法

# 修改源码 进入xadmin/views/dashboard.py

# 找到 
def render(self, name, value, attrs=None): 

# 替换为
def render(self, name, value, attrs=None, renderer=None):
Xadmin基础配置
# adminx.py
# Action 插件功能

# 基础设置
class BaseSetting(object):
    enable_themes = True  # 使用主题
    use_bootswatch = True
    
    
# 全局设置
class GlobalSettings(object):
    site_title = '塞拉菲娜管理后台'  # 标题
    site_footer = 'Powered by: 塞拉菲娜'  # 页尾
    site_url = '/'
    menu_style = 'accordion'  # 设置左侧菜单  折叠样式

xadmin.site.register(xviews.CommAdminView, GlobalSettings)
xadmin.site.register(xviews.BaseAdminView, BaseSetting)

from xadmin.plugins.actions import BaseActionViewclass MyAction(BaseActionView):

    # 这里需要填写三个属性
    action_name = "my_action"    #: 相当于这个 Action 的唯一标示, 尽量用比较针对性的名字
    description = _(u'Test selected %(verbose_name_plural)s') #: 描述, 出现在 Action 菜单中, 可以使用 ``%(verbose_name_plural)s`` 代替 Model 的名字.

    model_perm = 'change'    #: 该 Action 所需权限

    # 而后实现 do_action 方法
    def do_action(self, queryset):
        # queryset 是包含了已经选择的数据的 queryset
        for obj in queryset:
            # obj 的操作
            ...
        # 返回 HttpResponse
        return HttpResponse(...)
        
class MyModelAdmin(object):
	# 注册
    actions = [MyAction, ]

    
# 数据过滤器


# 该属性指定可以过滤的列的名字, 系统会自动生成搜索器 如果是外键,想要关联过去,可以使用__方法,是两个_哦,比如 user_id是外键,想要显示外键那边的name字段,就是使用 user_id__name  就可以了
list_filter 属性:
    
# 属性指定可以通过搜索框搜索的数据列的名字, 搜索框搜索使用的是模糊查找的方式, 一般用来搜素名字等字符串字段
search_fields 属性:

# 默认为 True , 指定是否可以自由搜索. 如果开启自有搜索, 用户可以通过 url 参数来进行特定的搜索, 例如:
free_query_filter 属性:
	http://xxx.com/xadmin/auth/user/?name__contains=tony

# 举个栗子
class UserAdmin(object):
    list_filter = ('is_staff', 'is_superuser', 'is_active', 'user_id__name')
    search_fields = ('username', 'first_name', 'last_name', 'email')
    
    
# 图表插件

"""
title : 图表的显示名称

x-field : 图表的 X 轴数据列, 一般是日期, 时间等

y-field : 图表的 Y 轴数据列, 该项是一个 list, 可以同时设定多个列, 这样多个列的数据会在同一个图表中显示

order : 排序信息, 如果不写则使用数据列表的排序
"""
class RecordAdmin(object):
    data_charts = {
        "user_count": {'title': u"User Report", "x-field": "date", "y-field": ("user_count", "view_count"), "order": ('date',)},
        "avg_count": {'title': u"Avg Report", "x-field": "date", "y-field": ('avg_count',), "order": ('date',)}
    }

    
    
# 书签功能


# 设置是否开启书签功能, 默认为 True
show_bookmarks 属性:

# 设置默认的书签. 用户可以在列表页面添加自己的书签, 你也可以实现设定好一些书签, 使用实例如下:
list_bookmarks 属性:


# 举个栗子
class UserAdmin(object):
    list_bookmarks = [{
        'title': "Female",         # 书签的名称, 显示在书签菜单中
        'query': {'gender': True}, # 过滤参数, 是标准的 queryset 过滤
        'order': ('-age'),         # 排序参数
        'cols': ('first_name', 'age', 'phones'),  # 显示的列
        'search': 'Tom'    # 搜索参数, 指定搜索的内容
        }, {...}
    ]
    
    
    
    
# 数据导出


# 默认Excel, CSV, XML, json 四种格式的数据导出 可以自定义
class MyModelAdmin(object):
    list_export = ('xls', xml', 'json')
                   
# 列表定时刷新
                   
                   
# 举个栗子
class MyModelAdmin(object):
    
    # 这会显示一个下拉列表, 用户可以选择3秒或5秒刷新一次页面.
    refresh_times = (3, 5)
                   
                   
# 显示数据详情
              
                   
"""
使用该插件主要设置 OptionClass 的 show_detail_fields, show_all_rel_details 两个属性. show_detail_fields属性设置哪些字段要显示详细信息, show_all_rel_details 属性设置时候自动显示所有关联字段的详细信息, 该属性默认为 True. 示例如下:
"""
                   
# 举个栗子
class MyModelAdmin(object):
    show_detail_fields = ['group', 'father', ...]
                   
                   
# 数据即时编辑
                   
                   
"""
使用该插件主要设置 OptionClass 的 list_editable 属性. list_editable 属性设置哪些字段需要即时修改功能.
"""
# 举个栗子
class MyModelAdmin(object):
    list_editable = ['price', 'status', ...]
                   
                   

你可能感兴趣的:(python)