django-tables2自定义表可视化

时间:2018-05-14 12:15:21

标签: python html django django-tables2

我正在使用Django开发一个Web应用程序(第一次使用它),我已成功使用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       ...
...          ...       ...

有没有办法在没有更改模型的情况下更改? 我一直在寻找一段时间,但我找不到改变它的方法。任何人都可以帮我这个吗?

这是table.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")

模型链接到一个表单,根据用户的输入,'Epitope'中可能有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 :(得分:0)

对于未动态生成的固定列集,请按以下方式定义表,不要将其与模型

关联
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不适用于动态列生成。对于动态列,客户端呈现是更好的选择。像datatables这样的JS库可能会对客户端有所帮助。数据表的django视图应用程序是django-datatable-view,但我没有在此应用程序中尝试过动态表。如果没有,那么可以根据数据表的要求序列化JSON数据的简单视图非常简单,只需要它。