django-tables2 настроить визуализацию таблиц - PullRequest
0 голосов
/ 14 мая 2018

Я работаю над веб-приложением с Django (впервые использую это) и успешно отрисовал таблицу с помощью django-tables2, и она выглядит так:

Sequence     Epitope     Score

sequence1    name1       0.5    
sequence1    name2       0.7
sequence2    name1       0.4
sequence2    name2       0.2
...          ...         ...

Но я бы хотел переключитьсястолбцы и строки, чтобы это выглядело так:

Sequence     name1     name2     ...
sequence1    0.5       0.7       ...
sequence2    0.4       0.2       ...
...          ...       ...

Есть ли способ изменить это без изменения моих моделей?Я долго искал, но не могу найти способ изменить это.Кто-нибудь может помочь мне с этим?

Вот моя таблица из tables.py

class CSVTables(tables.Table):

class Meta:
    model = CSV_Results
    attrs = {
        'class': 'output_table',
        'th': {'class': 'output_table_header'}
        }
    template_name = 'django_tables2/bootstrap.html'
    fields = ('TCRsequence', 'Epitope', 'Score')#,"Submission_ID")

Модель связана с формой, в зависимости от ввода от пользователя, может быть 10имена в «Эпитопе», 50 или просто 2, ....Моя модель:

class CSV_Results(models.Model):
TCRsequence = models.CharField(max_length=100)
Epitope = models.CharField(max_length=100)
Score = models.FloatField()
Submission_ID = models.ForeignKey('Info_Submission',on_delete=models.CASCADE)

class Meta:
    verbose_name_plural = "CSV_results"

Мои views.py:

table = CSVTables(CSV_Results.objects.filter(Submission_ID__Submission_ID__exact=submission_id))
    RequestConfig(request, paginate={'per_page': 50}).configure(table)

И в моем HTML я только что визуализировал таблицу с помощью:

{% render_table table%}

Спасибо!

1 Ответ

0 голосов
/ 14 мая 2018

Для фиксированного набора столбцов, которые не генерируются динамически, определите таблицу, как показано ниже, и не связывайте ее с моделью

class CSVTables(Table):
   sequence = Column(verbose_name='Sequence')
   name1 = Column(verbose_name='Name1')
   name2 = Column(verbose_name='Name2')

Затем выполните итерации по объектам наборов запросов, чтобы сгенерировать список объектов словаря, соответствующих таблице, который будет передан в качестве аргумента при инициализации таблицы. Каждый объект словаря должен иметь формат

{ 'sequence' : 'xxxx',
   'name1' : 'yyy',
   'name2' : 'zzz'}

Обновление:

django-tables2 не подходит для генерации динамических столбцов. Для динамических столбцов визуализация на стороне клиента является лучшим вариантом. На стороне клиента может помочь пара библиотек JS, таких как datatables . Приложение представления django для таблиц данных имеет вид django-datatable-view , но я не пробовал динамические таблицы в этом приложении. Если нет, то все, что нужно, - это простое представление, которое может сериализовать данные JSON в соответствии с требованием таблицы данных, что довольно просто.

...