簡體   English   中英

django-tables2 動態列

[英]django-tables2 dynamic columns

是否可以使用 django-tables2 在表中創建動態列? 我有一個模型,其中包含必須在表中的所有列,並且應該在列下的數據都有一個列的外鍵。

class Data(models.Model):
    data = models.CharField()
    column = models.ForeignKey(Column)
    user = models.ForeignKey(User)

class Column(models.Model):
    header = models.CharField()

所以表的最左邊的列應該是用戶,接下來的列應該都是 Column.objects.all() 中的列,然后數據在它有外鍵的列對象下。

我希望你能幫忙!

如果要在運行時而不是在編程時指定表的列,可以使用以下類:

表.py

import django_tables2 as tableslib

class DynamicColumnsTable(tableslib.Table):

    def __init__(self, *args, column_specs=(), **kwargs):
        bc = type(self.base_columns)(self.base_columns) # clone                                                                                                          
        for name, column in column_specs:
            self.base_columns[name] = column
        tableslib.Table.__init__(self, *args, **kwargs) # refers to static spec                                                                                          
        type(self).base_columns = bc # restore static spec

用法示例:

視圖.py

import django.shortcuts as shortcuts
import django_tables2 as tableslib

def test(request):
    data = [
        {"name": "Bobo"},
        {"name": "Gogo"},
    ]

    djtable = DynamicColumnsTable(column_specs=(  ('name', tableslib.Column()),  ),
                                  data=data)
    return shortcuts.render(request, 'test.html', {'djtable': djtable})

該表應如下所示:

class ABC(tables.Table):  
      user= tables.Column(accessor='user.username')
      column= tables.Column(accessor= 'column.header')  
      data= tables.Column(accessor='data')


    class Meta:
       model = Data
       sequence= ('user', 'column', 'data')

詳細信息: http : //django-tables2.readthedocs.org/en/latest/#specifying-alternative-data-for-a-column

暫無
暫無

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

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