这是我在stackoverflow上的第一篇文章,我会尽力遵守基本规则,请对我温柔点。
我需要对一个django应用程序进行一些更改(乍一看似乎很表面),客户希望网站管理部分表单的所有下拉菜单按字母顺序排序。问题是,其中一些选项基于在models.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)
的定义中实现?
谢谢大家。