Доступ к связанным моделям с помощью django-tables2

Может ли кто-нибудь привести наглядный пример того, как создать объект таблицы с помощью django-tables2, который выбирает и представляет данные из нескольких связанных моделей (т.е. реляционное соединение)? Документация подразумевает, что это возможно, но не говорит, как.

В обычном django работает функция select_related() красиво, но я не могу понять, как реализовать это в django-tables2. Я отмечаю, что есть и другие вопросы без ответа по аналогичным темам. .


person chill    schedule 22.01.2013    source источник


Ответы (1)


Во-первых, select_related() не требуется для доступа к связанным данным, он нужен для повышения производительности. Для django-tables2 вам необходимо определить файл accessor. Пример здесь: https://github.com/bradleyayers/django-tables2/issues/ 106

person ustun    schedule 22.01.2013
comment
Спасибо устун! Это очень полезно. foreigncolumn = tables.Column(accessor='foreignmodel.foreigncolumnname') в определении таблицы работает очень хорошо. - person chill; 23.01.2013
comment
Приятно слышать, что это сработало! Хороший совет — искать ключевые слова в разделе проблем репозиториев Gitup, обычно вы найдете там решения в дополнение к SO. Не могли бы вы отметить ответ как принятый? Спасибо. - person ustun; 23.01.2013
comment
Как насчет того, чтобы перейти на 1:N вместо N:1? Например, что, если я хочу объединить все связанные модели в ячейке таблицы? Со старым render_<column_name>(self, record) способом это было бы возможно. Я пытался передать lambda record: ' '.join(...) в accessor=, но это просто дает мне None (--). И мне не хочется добавлять в модель такой метод, о котором я знаю, что он работает. Я просто не думаю, что это относится к слою модели, а к слою таблицы (tables.py). - person Tomasz Gandor; 23.04.2014
comment
@TomaszGandor, не могли бы вы создать новый столбец с accessor='id', а затем вызвать связанные элементы в функции рендеринга? - person DanH; 15.05.2015