Mou*_*Tio 0 python django django-queryset
我想通过一个包含数字的字段来命令QuerySet.我有这个代码:
MyTable.objects.all().order_by('my_char_field')
Run Code Online (Sandbox Code Playgroud)
有一些"my_char_field"的例子:
"ver3", "ver10", "x5.1 (1)", "ver4", "x5.1 (2)"
Run Code Online (Sandbox Code Playgroud)
上面代码的顺序结果是:
"ver10", "ver3", "ver4", "x5.1 (1)", "x5.1 (2)"
Run Code Online (Sandbox Code Playgroud)
但我想要的顺序是:
"ver3", "ver4", "ver10", "x5.1 (1)", "x5.1 (2)"
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得自然顺序?
这似乎更像是一个数据存储问题.如果更改数据结构,则会变得更加容易
version_type = models.CharField()
version_num = models.FloatField()
version_revision = models.SmallIntegerField(null=True)
unique_together = [('version_type', 'version_num', 'version_revision')]
.order_by('version_type', 'version_num', 'version_revision')
Run Code Online (Sandbox Code Playgroud)
这也将解决你的下一期"如何有效地获得'ver'类型的所有版本?"