我的问题是exactly like this one,除了它是在Django中返回的查询。
我想要
返回的字段text_all = RawText.objects.filter(id__contains=county.short_code).order_by('id')
以
的形式返回1,1
2,1
10,1
而不是:
1,1
10,1
2,1
我该怎么办?注: ID是一个char字段,必须是因为逗号。
谢谢!
答案 0 :(得分:1)
如果你的id
代表十进制数,你最好在数据库中使用正确的数据类型,并决定在其他地方显示char','(可能通过玩国际化)。
否则,您必须在检索数据后在应用程序级别编写自己的排序方法。
答案 1 :(得分:1)
您可以将文字字段设为固定长度,而不是
1,1
10,1
2,1
你有
001,1
002,1
010,1
答案 2 :(得分:0)
第一种方法:在RawText模型中有两个额外的数字列,第一列将对应于id的第一部分,第二列将对应于id的第二部分。这种方式很简单:
text_all = RawText.objects.filter(id__contains=county.short_code).order_by('first_part', 'second_part')
替代方法:在您的应用程序中完成排序:
另一种方法:您可以将您的id而不是char设置为Decimal类型,这样您就可以将其排序为数字:
1.1
2.1
10.1