【问题标题】:Ordering CharField form choices in Django在 Django 中订购 CharField 表单选项
【发布时间】:2017-06-24 20:53:42
【问题描述】:

我目前有一个通过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

【问题讨论】:

    标签: django forms python-3.x


    【解决方案1】:

    __init__ 方法中排序看起来没问题。请记住,只有元组中的第二项会被翻译,因此您需要根据它进行排序。

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

    【讨论】:

    • 啊,有道理!我最初没有按第二项排序,因为存储在数据库中的值和它的标签是相同的——但当然,只有标签被翻译,所以我们必须按那个排序:) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2012-02-21
    • 2016-01-28
    • 1970-01-01
    • 2017-09-14
    相关资源
    最近更新 更多