paz*_*tek 5 python django django-admin
这是我在 stackoverflow 上发表的第一篇文章,我将尝试遵循基本规则,但对我要温和。
我必须对 django 应用程序进行一些更改(乍一看似乎很肤浅)。客户希望网站管理部分中的所有表单下拉菜单按字母顺序排序。问题是其中一些选择是基于 models.py 文件中定义的静态列表,如下所示:
STATE=(
(1, 'Full'),
(2, 'Damaged'),
(3, 'Partially damaged')
)
Run Code Online (Sandbox Code Playgroud)
我尝试像这样重新排序列表:
STATE=(
(2, 'Damaged'),
(1, 'Full'),
(3, 'Partially damaged')
)
Run Code Online (Sandbox Code Playgroud)
但这似乎没有什么区别(尽管我不太熟悉Python缓存类和视图的方式)。
像这样重新排序索引:
STATE=(
(1, 'Damaged'),
(2, 'Full'),
(3, 'Partially damaged')
)
Run Code Online (Sandbox Code Playgroud)
可行,但意味着需要编写一些巨大且复杂的 SQL 脚本来保持旧数据的一致性(因为大多数列表都比这个列表长,并且排列会变得更加复杂)。
所以我的问题是:有没有办法根据这些选项的名称而不是索引对这些选项进行排序?也许在 的定义中models.IntegerField(..., choices=STATE)?
谢谢你们。
小智 4
稍微简洁一点的表示法:
sorted_state = sorted(STATE, key=lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)