寻找实施"人类"的方法在django排序

时间:2014-05-27 08:51:27

标签: python django sorting

我正在使用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”和其他单词不按字母顺序排列。

非常感谢您的回答!

0 个答案:

没有答案