要加入列需要自定义一个列,doc中给出如下的例子:
>>> from django.utils.safestring import mark_safe >>> from django.utils.html import escape >>> >>> class ImageColumn(tables.Column): ... def render(self, value): ... return mark_safe('<img src="/media/img/%s.jpg" />' ... % escape(value)) ...
因此需要自定义一个列的操作:
class HandleColumn(tables.Column): def render(self, value): return mark_safe( '<a class="btn btn-warning btn-xs" href="/task/edit/%s/" style="margin-right: 5px;" >
<span class="glyphicon glyphicon-edit" style="padding-right:3px;"></span>编辑</a>
<a class="btn btn-danger btn-xs" href="/task/delete/%s/"><span class="glyphicon glyphicon-remove" style="padding-right:3px;"></span>删除</a>' % ( escape(value), escape(value)))
接下来就是使用:
from django_tables2.utils import A class TaskTable(tables.Table): # title = tables.Column(attrs={"th": {"class": "text-center"}, "td": {"class": "text-center"}}) 这个是我的记忆,没有什么用 handle = HandleColumn(verbose_name="操作", accessor=A('id')) # 因为编辑或者删除时必须要有id,所以需要访问 id 的值,这里 A 是一个访问器,需要提前导入 def __init__(self, *args, **kwargs): super(TaskTable, self).__init__(*args, **kwargs) # 下面纯粹是为了循环,里面的名称没有什么用处。 for name in self.columns.items(): # 给每一列文字加上居中 self.attrs.update({"th": {"class": "text-center"}, "td": {"class": "text-center"}}) class Meta: model = Task sequence = ('id', 'level', 'title', 'user', 'detail') attrs = {'class': 'table table-sm table-bordered', "id": "mytable"} template_name = 'django_tables2/bootstrap4.html'
标签:table2,text,self,value,Django,id,django,class From: https://www.cnblogs.com/lessonlearn/p/16950754.html