自定义显示列函数
在列表中新增自定义列,比如“编辑”和“删除”按钮
1、首先基类模块导入函数
from django.urls import reverse
from django.utils.safestring import mark_safe
from types import FunctionType
2、在基类中新增自定义函数
def display_edit(self, obj=None, is_header=None):
"""
自定义页面显示的列(表头和内容)
:param obj:
:param is_header:
:return:
"""
if is_header:
return "编辑"
name = "%s:%s" % (self.site.namespace, self.get_change_url_name,)
return mark_safe('<a href="%s">编辑</a>' % reverse(name, args=(obj.pk,)))
def display_del(self, obj=None, is_header=None):
if is_header:
return "删除"
name = "%s:%s" % (self.site.namespace, self.get_delete_url_name,)
return mark_safe('<a href="%s">删除</a>' % reverse(name, args=(obj.pk,)))
3、stark组件中调用方式
list_display = ['id', 'title', StarkHandler.display_edit, StarkHandler.display_del]
扩展:点击编辑或删除按钮时需要有跳转链接,再此优化自定义链接
1、基类模块中自启动函数需要新增字段
2、新增自定义链接函数
def get_url_name(self, param):
app_label, model_name = self.model_class._meta.app_label, self.model_class._meta.model_name
if self.prev:
return '%s_%s_%s_%s' % (app_label, model_name, self.prev, param,)
return '%s_%s_%s' % (app_label, model_name, param,)
@property
def get_list_url_name(self):
"""
获取列表页面URL的name
:return:
"""
return self.get_url_name('list')
@property
def get_add_url_name(self):
"""
获取添加页面URL的name
:return:
"""
return self.get_url_name('add')
@property
def get_change_url_name(self):
"""
获取修改页面URL的name
:return:
"""
return self.get_url_name('change')
@property
def get_delete_url_name(self):
"""
获取删除页面URL的name
:return:
"""
return self.get_url_name('delete')
3、StarkSite函数中有部分调用需要加self
效果