2013-02-09 15 views
2

В моем приложении отображается таблица со многими столбцами. Я использую приложение Django tables 2 для отображения таблицы. Я пытаюсь сделать элементы в одном столбце гиперссылки, чтобы пользователи могли щелкнуть. Образец URL-адреса прост: /contact/pk/, например. /contact/2/. Это то, что у меня есть в моделях:Таблицы Django 2: гиперссылки в столбце

#models.py 

class Contact(models.Model): 
    name = models.CharField(max_length=200) 
    . . . 

class ContactTable(tables.Table): 

    name = tables.LinkColumn('contact_detail', args=[A('pk')]) 
    class Meta: 
     model = Contact 
     attrs = {"class": "paleblue"} 

#urls.py 

url(r'^contact/(?P<item_id>\d+)/$', 'app.views.contact_view', name='contact_detail'), 

Однако элементы не имеют гиперссылки.

+0

Я думаю, что это поможет вам: http://stackoverflow.com/questions/8613542/the-linkcolumn-about-django-tables2 – catherine

ответ

9

Это решило его: решение

class ContactTable(tables.Table): 
    edit_entries = tables.TemplateColumn('<a href="/contact/{{record.id}}">Edit</a>') 

    class Meta: 
     model = Contact 
     attrs = {"class": "paleblue"} 
0

Что вы собираетесь в render_table? Просто обычный QuerySet? Я предполагаю, что вы забыли создать экземпляр и настроить таблицу в своем представлении. Вот пример, приведенный в документах:

# tutorial/views.py 
from django.shortcuts import render 
from django_tables2 import RequestConfig 
from tutorial.models import Person 
from tutorial.tables import PersonTable 

def people(request): 
    table = PersonTable(Person.objects.all()) 
    RequestConfig(request).configure(table) 
    return render(request, 'people.html', {'table': table}) 

Если вы делаете это так, оно должно работать нормально.

UPDATE:

Я знаю, что проблема уже решена, но я заметил, что name = tables.LinkColumn('contact_detail', args=[A('pk')]) строки коды находится в пределах внутреннего Meta класса ContactTable класса. Он должен быть за пределами внутреннего класса Meta.

+0

Моя форма работает отлично время используя базовую настройку, представленную на таблицах Django 2 docs. Я хочу добавить еще одну функцию, в которой элементы в одной колонке получат гиперссылку. Например: таблица с именем и возрастом: Джон и 35. Я хочу, чтобы я мог нажать на Джона и привести к странице, где я могу изменить его возраст. У меня есть форма редактирования, но она должна быть связана с данными в визуализированных таблицах с шаблоном url, который я упомянул выше. – nixnotwin

+0

@nixnotwin Что вы передаете 'render_table' в свой шаблон? –

+0

Точно то, что вы разместили в своем ответе выше. Я не внес никаких изменений в представление по умолчанию, упомянутое в документах. – nixnotwin

2

nixnotwin использует жестко закодированные URL. Использование обратного поиска адреса:

class ContactTable(tables.Table): 
    edit_entries = tables.TemplateColumn('<a href="{% url \'contact_detail\' record.id %}">Edit</a>') 
Смежные вопросы