2017-08-31 50 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