【发布时间】:2016-04-18 20:22:21
【问题描述】:
我正在用我的 models.py 中定义的值填充一个下拉列表,类似于:
rank_choices = (
('King', 'King')
('Prince', 'Prince')
('Duke', 'Duke')
('Baron', 'Baron')
('Lackey', 'Lackey')
当我显示在特定时间具有排名的人员列表时,我希望他们以降序显示。
当前查询(仅按字母顺序):
attendees = Rank.objects.filter(feast__id=feast__id).exclude(rank='Lackey').order_by('rank')
如何更改它以按其在列表中的位置排序?
我正在考虑这个:
rank_choices = (
(0, 'King')
(1, 'Prince')
(2, 'Duke')
(3, 'Baron')
(4, 'Lackey')
但即使我可以从数值中获取详细值,排序中的任何更改都会返回不正确的数据预更改值。有没有更好的办法?
选择的解决方案
受 wim 回答的启发,我最终进行了数据迁移以将排名更改为数值并按如下方式排序。
ranks = sorted(ranks, key=lambda x: int(x.rank))
我通过将模型中的 rank_choices 导入我的视图并在排序后将数值替换为相应的标题来获取详细值。
【问题讨论】:
标签: python django postgresql django-queryset