这是我在stackoverflow上的第一篇文章,我将试着遵循基本规则,但要对我温柔。
我必须对django应用程序做一些更改(乍一看似乎很肤浅)。
客户端希望网站管理部分中表单的所有下拉菜单按字母顺序排序。问题是,这些选择中的一些是基于在MODYS.PY文件中定义的静态列表,如:

STATE=(
    (1, 'Full'),
    (2, 'Damaged'),
    (3, 'Partially damaged')
)

我试着这样重新排列列表:
STATE=(
    (2, 'Damaged'),
    (1, 'Full'),
    (3, 'Partially damaged')
)

但这似乎没有什么区别(尽管我并不真正熟悉python缓存类和视图的方式)。
重新排序索引,如下所示:
STATE=(
    (1, 'Damaged'),
    (2, 'Full'),
    (3, 'Partially damaged')
)

但是,这将意味着编写一些庞大而复杂的SQL脚本来保持旧数据的一致性(因为大多数列表都比这个长,排列也会变得更复杂)。
所以我的问题是:有没有办法根据这些选项的名称而不是索引对它们进行排序?可能在models.IntegerField(..., choices=STATE)的定义中?
谢谢大家。

最佳答案

略为简洁的符号:

sorted_state = sorted(STATE, key=lambda x: x[1])

10-06 11:22