django-tables2 自定义 table 可视化
django-tables2 customize table visualization
我正在使用 Django 开发一个网络应用程序(第一次使用它),我已经成功地使用 django-tables2 渲染了一个 table,它看起来像这样:
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
的 table
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 中,我刚刚渲染了 table:
{% render_table table %}
谢谢!
对于不是动态生成的固定列集,如下定义 table 并且不要将其与模型关联
class CSVTables(Table):
sequence = Column(verbose_name='Sequence')
name1 = Column(verbose_name='Name1')
name2 = Column(verbose_name='Name2')
然后遍历查询集对象以生成与 table 匹配的字典对象列表,这将在 table 初始化期间作为参数传递。每个字典对象的格式应为
{ 'sequence' : 'xxxx',
'name1' : 'yyy',
'name2' : 'zzz'}
更新:
django-tables2 不适合动态列生成。对于动态列,客户端呈现是更好的选择。有几个像 datatables might help at client side. A django view app for datatables is django-datatable-view 这样的 JS 库,但我没有在这个应用程序中尝试过动态 tables。如果没有,一个简单的视图可以根据数据 table 的要求序列化 JSON 数据,这非常简单,这就是所需要的。
我正在使用 Django 开发一个网络应用程序(第一次使用它),我已经成功地使用 django-tables2 渲染了一个 table,它看起来像这样:
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
的 tableclass 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 中,我刚刚渲染了 table:
{% render_table table %}
谢谢!
对于不是动态生成的固定列集,如下定义 table 并且不要将其与模型关联
class CSVTables(Table):
sequence = Column(verbose_name='Sequence')
name1 = Column(verbose_name='Name1')
name2 = Column(verbose_name='Name2')
然后遍历查询集对象以生成与 table 匹配的字典对象列表,这将在 table 初始化期间作为参数传递。每个字典对象的格式应为
{ 'sequence' : 'xxxx',
'name1' : 'yyy',
'name2' : 'zzz'}
更新:
django-tables2 不适合动态列生成。对于动态列,客户端呈现是更好的选择。有几个像 datatables might help at client side. A django view app for datatables is django-datatable-view 这样的 JS 库,但我没有在这个应用程序中尝试过动态 tables。如果没有,一个简单的视图可以根据数据 table 的要求序列化 JSON 数据,这非常简单,这就是所需要的。