Skip to main content
 首页 » 编程设计

python之Django 表添加 LinkColumn/NoReverseMatch 错误

2024年08月28日27jiqing9006

我有一个包含一些字段的模型,我想将一个 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) 

table 。在这里,我尝试使用 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 模式是

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

和 View

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 传递?

请您参考如下方法:

尝试:

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

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