您遇到的问题是由以下原因引起的LinkColumn
期望绑定到您的特定属性Item
模型,即它正在寻找一个Item.edit
您的实例上的属性。
因为你实际上并没有Item.edit
属性,对您的排序edit
列没有意义,你应该将其标记为不可订购:
from django_tables2.utils import A
edit = tables.LinkColumn('item_edit', args=[A('pk')], orderable=False)
链接本身的文本将来自Item.edit
属性,您没有该属性,因此您需要通过添加render_edit
表类的方法:
def render_edit(self):
return 'Edit'
您可以更换'Edit'
字符串,包含您想要在该列中显示的任何内容。
更新:根据@SunnySydeUp的建议,您还需要指定empty_values=()
对于列,为了获取其呈现的值:
edit = tables.LinkColumn('item_edit', args=[A('pk')], orderable=False, empty_values=())
参考:
http://django-tables2.readthedocs.org/en/latest/pages/order-by-accessors.html#specifying-alternative-ordering-for-a-column
http://django-tables2.readthedocs.org/en/latest/pages/custom-rendering.html#table-render-foo-methods
免责声明:此答案基于django-tables2
文档和源代码,尚未在实际的 Django 应用程序上进行测试。