Таблицы Django 2: Гиперссылки в столбце

Вопрос: В моем приложении отображается таблица со многими столбцами. Я использую приложение Django tables 2 для отображения таблицы. Я пытаюсь сделать элементы в одном столбце гиперссылки, чтобы пользователи могли щелкнуть. Шаблон url прост: /contact/pk/, например, /contact/2/. Это то, что у меня есть в моих моделях: #models.py class Contact(models.Model): name = models.CharField(max_length=200) . . . class

Вопрос:

В моем приложении отображается таблица со многими столбцами. Я использую приложение Django tables 2 для отображения таблицы. Я пытаюсь сделать элементы в одном столбце гиперссылки, чтобы пользователи могли щелкнуть. Шаблон url прост: /contact/pk/, например, /contact/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’),

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

Лучший ответ:

Это решило это:

class ContactTable(tables.Table): edit_entries = tables.TemplateColumn(‘<a href=»/contact/{{record.id}}»>Edit</a>’) class Meta: model = Contact attrs = {«class»: «paleblue»} Ответ №1

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

class ContactTable(tables.Table): edit_entries = tables.TemplateColumn(‘<a href=»{% url ‘contact_detail’ record.id %}»>Edit</a>’) Ответ №2

Что вы передаете 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})

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

ОБНОВИТЬ:

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

Оцените статью
Добавить комментарий