2016-08-04 140 views
0

問題:我在哪裏編輯我的django代碼以根據業務邏輯更改單個單元格的背景顏色?單元格顏色Django-Tables2

在我的views.py我有捕獲列的「PTS」的最大值邏輯:

def show_teams(request): 
reg = Teamoffense.objects.filter(~Q(rk='RK')) 
pts = Teamoffense.objects.filter(~Q(pts='PTS')).values('pts') 
seq = [item['pts'] for item in pts] 
maxseq = max(seq) 

table = SimpleTable(reg) 
table_to_report = RequestConfig(request).configure(table) 
if table_to_report: 
    return create_report_http_response(table_to_report, request) 
return render(request, 'index.html', { 
    'table': table, 
    'reg': reg, 
    'maxseq': maxseq, 
}) 

我怎樣才能使任何單元格與該列中的bgcolor最大值=「綠色「?我現在有一個顯示像這樣一個簡單的表:

class SimpleTable(TableReport): 

class Meta: 
    model = Teamoffense 
    exclude = ("column1","column2") 
    exclude_from_report = ("column1","column2") 
    attrs = {'class': 'paleblue'} 
+0

@Jieter有沒有辦法做的是在這裏完成:http://stackoverflow.com/questions/37513463/how-to-change-color-of-django-tables-row與單個細胞? – Krusaderjake

回答

1

經過研究展望Django-Tables2 API Docs我發現Table.render_foo methods是什麼,需要在我的情況。這改變了列的呈現方式。請務必設置column.attrs而不是self.attrs,因爲根據我的經驗,這是我能夠設置單個單元格樣式的方式。

#tables.py 
import django_tables2 as tables 
from .models import MyTable 
from MyApp import views 


class SimpleTable(tables.Table): 


    def __init__(self, *args, **kwargs): 
     super(SimpleTable, self).__init__(*args, **kwargs) 
     self.maxpts = views.maxpts 

    #render_foo example method 
    def render_pts(self, value, column): 
     if value == self.maxpts: 
      column.attrs = {'td': {'bgcolor': 'lightgreen'}} 
     else: 
      column.attrs = {'td': {}} 
     return value 


    class Meta: 
     model = MyTable 
     attrs = {'class': 'paleblue'}