2017-08-31 81 views
0

您好我有一個這樣的表:Django的tables2分揀非查詢集數據

class MyTable(tables.Table): 

    brand = tables.Column(verbose_name='Brand') 
    market = tables.Column(verbose_name='Market') 
    date = tables.DateColumn(format='d/m/Y') 
    value = tables.Column(verbose_name='Value') 

我填充表與list of dicts然後我配置它,並在平常使其在我看來, django-tables2的方式:

data = [ 
    {'brand': 'Nike', 'market': 'UK', 'date': <datetime obj>, 'value': 100}, 
    {'brand': 'Django', 'market': 'FR', 'date': <datetime obj>, 'value': 100},  
] 

table = MyTable(data) 

RequestConfig(request, paginate=False).configure(table) 

context = {'table': table} 

return render(request, 'my_tmp.html', context) 

這一切都很好地呈現其正確的數據。但是,我可以通過網頁上的date列和value列進行排序,但不能通過brandmarket進行排序。所以看起來非字符串值可以排序,但字符串不能。我一直在試圖找出如何做這種排序,是否有可能與非查詢集數據?

我無法用查詢集填充表格,因爲我使用自定義方法生成value列數據。任何幫助感謝!我想我需要在我的tables.Column中指定order_by參數,但尚未找到正確的設置。

回答

0

data.sort(key = lambda item: item["brand"].lower())將根據品牌(按字母順序)對列表進行排序(因此它將返回無;原始「數據」列表會被編輯)。對於任何鍵都可以做到這一點。

或者,sorted(data, key = lambda item: item["brand"].lower())返回列表的排序副本。

+0

我在哪裏可以將這段代碼放在表格或視圖中? – DrBuck

+0

當你得到的信息作爲一個列表,inser列表到這個代碼:) – Treehee

+0

也任何想法爲什麼'列'對象支持排序日期時間對象和非字符串值本地,但不是字符串? – DrBuck