2015-02-27 2 views
0

Я пытаюсь установить атрибут строки в django-tables2 на id текущей записи.установить атрибут строки в django-tables2 на record.id

Для этого я изменил одну строку в шаблоне table.html таким образом:

<tr row_id="{{ record.id }}" class="{{ forloop.counter|divisibleby:2|yesno:"even,odd" }}"> 

Но это дает мне пустой ROW_ID = «» в HTML результат. Что не так?

+0

вы можете прокомментировать, есть ли предложение ниже работал на вас, или если вы нашли другой способ? – szeitlin

+0

Привет! Я не тестировал это предложение. Я использовал атрибут ячейки для своих задач. – Leo

ответ

0

имя по умолчанию для для переменной для Джанго-tables2 table.html (как мы видим на https://github.com/bradleyayers/django-tables2/blob/master/django_tables2/templates/django_tables2/table.html#L25) является row (а не record, который используется для TemplateColumn).

Вы не поделились своим шаблоном table.html, но я думаю, что это, вероятно, почему вы видите пустой row_id. Так вы можете попробовать изменить row_id="{{ record.id }}" на row_id="{{ row.id }}"?

+0

Я просто попробовал это, и он не работал (вернулся с row_id = "-"). – szeitlin

+0

Имеются ли в ваших данных поле с именем «id»? – Serafeim

+0

да, бывает. (обратите внимание, что SO не позволит мне просто отправить «да», потому что недостаточно символов) – szeitlin

1

Таблицы2 row объект не является записью .. но запись находится внутри него. Так что вы можете сделать:

<tr id="row_{{ row.record.id }}" class="{{ forloop.counter|divisibleby:2|yesno:"even,odd" }}"> 

Или используя свойство данных

<tr data-record-id="row_{{ row.record.id }}" class="{{ forloop.counter|divisibleby:2|yesno:"even,odd" }}"> 

Это определенно работает .. Я использую его.

Также обратите внимание на (последний) ответ здесь: django-tables2 specify different properties for different rows, который предлагает использовать собственный метод визуализации для добавления некоторого html в ячейку внутри каждой строки. Таким образом, вам не нужно поддерживать собственный шаблон tables2. Затем с помощью jquery достаточно легко найти элемент, содержащий идентификатор .. если пользователь нажимает на строку или что бы вы хотели сделать ...