在Django中订购CharField表单选项

时间:2017-02-07 14:47:26

标签: django forms python-3.x

我目前有一个我通过django.forms.ModelForm创建的表单。我已经列出了表单中其中一个CharFields的选择,但是在翻译时,选择当然是乱序的 - 它们保持在models.py中列出的顺序。我希望选择在翻译语言中按字母顺序排列。如何进行翻译,然后对它们进行排序,以便在表单中按字母顺序列出?

我想我可能必须覆盖self.fields的__init__方法,但是无法以成功重新排序我的类别的方式这样做。

def __init__(self, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    SORTED_CATEGORIES = sorted(CATEGORIES)
    self.fields['category'].choices = SORTED_CATEGORIES

1 个答案:

答案 0 :(得分:2)

__init__方法中的排序看起来不错。请记住,只有元组中的第二项被翻译,所以你想根据它进行排序。

SORTED_CATEGORIES = sorted(CATEGORIES, key=lambda x: x[1])