简介:
总结下前端、后端遇到的排序问题
后端排序:
1.一个表一列是char ,但存的是数字
op.objects.filter(op_other='net_ip_count').extra(select={'op_char': 'CAST(op_03 AS INTEGER)'}) .order_by('op_char')
2.一个表一列是IP
ip.objects.filter(ip_vlan=obj[1]).extra(select={'ipa': "inet_aton(ip_address)"}).order_by('ipa')
前端排序:
主要是 字典、序列 通过 前端模板排序
1.增加模板函数:
应用目录为 app01 templatetags/ ├── __init__.py ├── myfilter.py mkdir app01/templatetags touch app01/templatetags/__init__.py vim app01/templatetags/myfilter.py # -*- coding : utf-8 -*- from django import template @register.filter(name='sort') def listsort(value): if isinstance(value, dict): a = [] key_list = sorted(value.keys(),key=my_key) for key in key_list: a.append((key, value[key])) return a elif isinstance(value, list): return sorted(value) else: return value listsort.is_safe = True def my_key(dict_key): try: return int(dict_key) except ValueError: return dict_key
2.在前端页面引用
{% load myfilter %} {% for key,value in ip_list|sort %}
参考资料: