我正在使用django-restframework开发一个项目,用户将命名对象,app将它们作为字符串(Django的varchar)保存在数据库中。未定义名称格式。可能值的示例是“1”,“1A”“2B”“2-2”,“方框#1”......
我想订购那些“人类”排序的人。一些开发人员将这种类型的排序称为“字母数字排序”,其他人称为“人类排序”。
我尝试过:
queryset = KlassModel.objects.all().extra(select={'intname': 'CAST(name AS INTEGER)'}).order_by('intname')
输出是:
[u'burgerland', u'Box #1', u'Box #2', u'B12', u'MyBox #22', u'OthersBox 13', u'OthersBox 14', u'MyBeatBox', u'MetaStruct', u'A', u'B', u'1A', u'1B', u'1Z', u'2G', u'2-2', u'2A', u'2A #1', u'2A1', u'11', u'11S', u'22', u'22F']
这不是我想要的。 “MyBeatBox”,“MetaStruct”和其他单词不按字母顺序排列。
非常感谢您的回答!