Django表添加了LinkColumn / NoReverseMatch错误

时间:2013-12-13 16:05:12

标签: python django django-tables2

我有一个包含某些字段的模型,我想将LinkColumn添加到详细信息页面。我有一个工作版本,但我想转到django-tables2

问题是链接列不显示任何链接,只是“ - ”

模型

class Events(models.Model):
    id = models.IntegerField(primary_key=True)
    date = models.DateField(null=True, blank=True)
    time = models.TimeField(null=True, blank=True)

表。我尝试使用args=[A('id')]args=[A('pk')]

class EventsTable(tables.Table):

    time = tables.TemplateColumn("{{value|time:'H:i'}}", verbose_name='Time UTC')

    detail_link = tables.LinkColumn('detail', args=[A('id')], verbose_name='Detail')

    class Meta:
        model = Events
        attrs = {"class": "paleblue"}

        fields = ("date", "time", "detail_link")

mi url pattern is

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^(?P<event_id>\d+)/$', views.detail, name='detail'),
)

和视图

def index(request):
    table = EventsTable(Events.objects.all(), order_by=('-date', '-time'))
    RequestConfig(request, paginate={"per_page": PAGE_LIMIT}).configure(table)
    return render(request, "db_interface/events.html", {"table": table})

编辑: 将detail_link更改为

detail_link = tables.LinkColumn('detail', args=[A('id')], verbose_name='Detail', empty_values=())

现在我得到了NoReverseMatch异常

Reverse for 'detail' with arguments '(5075,)' and keyword arguments '{}' not found

数字5075是第一个事件的ID。我不知道是否由于任何原因没有将参数作为int传递?

1 个答案:

答案 0 :(得分:3)

尝试:

detail_link = tables.LinkColumn('detail', args=[A('id')], verbose_name='Detail', empty_values=())

根据docs,仅在确定单元格的值不是空值时才调用render方法。由于Event模型没有detail_link字段,因此没有赋予它的值。