簡體   English   中英

django-tables2自定義表格可視化

[英]django-tables2 customize table visualization

我正在使用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       ...
...          ...       ...

有沒有一種方法可以在更改我的模型的情況下進行更改? 我已經搜索了一段時間,但找不到改變它的方法。 誰能幫我這個?

這是來自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表%}

謝謝!

對於不是動態生成的固定列集,請按以下方式定義表,並且不要將其與模型關聯

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

然后遍歷queryset對象以生成與表匹配的字典對象列表,該列表將在表初始化期間作為參數傳遞。 每個字典對象應采用以下格式

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

更新:

django-tables2將不適合動態列生成。 對於動態列,客戶端渲染是一個更好的選擇。 有幾個JS庫像數據表可能有助於在客戶端。 數據表的django視圖應用程序是django-datatable-view ,但是我沒有在此應用程序中嘗試過動態表。 如果不是這樣,那么只需要一個簡單的視圖,就可以按照數據表的要求序列化JSON數據,這非常簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM