Han*_*ong 5 django hyperlink django-tables2
我试图在我的一个表中添加一个额外的列,将url添加到另一个页面.
我的表:
class ItemTable(tables.Table):
edit = tables.LinkColumn('item_edit', args=[A('pk')])
class Meta:
model = Item
fields = ('name', 'slot', 'klass', 'rarity', 'price')
Run Code Online (Sandbox Code Playgroud)
我的网址:
url(r'^admin/item/edit/(?P<item_id>\d+)/$', views.item_edit, name='item_edit')
Run Code Online (Sandbox Code Playgroud)
现在有了这个,我得到了我的表,但是最后一列(编辑)只有破折号+当我点击标题时页面崩溃了.
我一直在看http://django-tables2.readthedocs.org/en/latest/#django_tables2.columns.LinkColumn ,我不确定我哪里出错了
您遇到的问题是由于LinkColumn期望绑定到Item模型中的特定属性,即它正在查找Item.edit实例上的属性.
由于您实际上没有Item.edit属性,因此对edit列进行排序是没有意义的,您应该将其标记为不可订购:
edit = tables.LinkColumn('item_edit', args=[A('pk')], orderable=False)
Run Code Online (Sandbox Code Playgroud)
链接本身的文本将来自Item.edit您没有的属性值,因此您需要通过向render_edit表类添加方法来自行提供:
def render_edit(self):
return 'Edit'
Run Code Online (Sandbox Code Playgroud)
您可以将该'Edit'字符串替换为您希望在该列中显示的任何内容.
更新:根据@SunnySydeUp的建议,您还需要empty_values=()为列指定,以便获取其值:
edit = tables.LinkColumn('item_edit', args=[A('pk')], orderable=False, empty_values=())
Run Code Online (Sandbox Code Playgroud)
参考文献:
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应用程序上进行测试.
小智 6
要正确格式化链接并使用您选择的链接文本,您可以在表类中执行以下操作:
def render_edit_link(self,record):
return mark_safe('<a href='+reverse("edit", args=[record.pk])+'>Edit</a>')
Run Code Online (Sandbox Code Playgroud)
其中'edit'是网址的名称.
| 归档时间: |
|
| 查看次数: |
8281 次 |
| 最近记录: |