2017-02-07 9 views
0

私は現在django.forms.ModelFormで作成しているフォームを持っています。私はフォームにあるCharFieldsの1つの選択肢を列挙しましたが、翻訳時には選択肢はもちろん順不同です - models.pyにリストされている順序で残ります。私は翻訳された言語でアルファベット順に選択をしたいと思います。どのように進んで翻訳してから注文することができますか?その形式でアルファベット順に並べられていますか?DjangoでのCharFieldフォームの選択

私は__init__のself.fieldsメソッドをオーバーライドする必要があるかもしれないと思っていますが、カテゴリを正常に並べ替えることはできません。

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

答えて

1

__init__の方法でソートするのがOKです。タプルの2番目の項目だけが翻訳されるので、それに基づいてソートする必要があることに注意してください。

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

ああ、意味があります!私は最初に2番目の項目でソートしていませんでした。なぜなら、DBに格納されている値とそのラベルの両方が同じであるからです - もちろん、ラベルのみが翻訳されるので、それをソートする必要があります:) Thanks! – orange1

関連する問題