如何按字母顺序对翻译的模型字段进行排序

时间:2015-05-23 15:03:29

标签: python django

我正在尝试按字母顺序对翻译的字段名称进行排序。我怎么能修改下面的代码来实现这个目标?目前,此代码翻译详细名称。现在,我想知道如何按字母顺序排序翻译的字段名称。该网站将提供多种语言版本。

models.py

from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _

class User_interest(models.Model):
    user = models.OneToOneField(User)
    acting = models.BooleanField(verbose_name=_('Acting'),default=False)
    aikido = models.BooleanField(verbose_name=_('Aikido'),default=False)
    airhockey = models.BooleanField(verbose_name=_('Air Hockey'),default=False)
    airsoft = models.BooleanField(verbose_name=_('Airsoft'),default=False)
    americanfootball = models.BooleanField(verbose_name=_('American Football'),default=False)
    ...
    ...
    ...

forms.py

class InterestsForm(forms.ModelForm):

    class Meta:
        model = User_interest
        exclude = ['user']

template.html

<ul>
    {% for interest in interests %}

        <li>
             {{ interest }} {{ interest.label }}
        </li>

     {% endfor %}
</ul>

1 个答案:

答案 0 :(得分:1)

不幸的是,我无法直接帮助您解决有关如何对字段进行排序的问题,我希望有人可以。但另外,我想分享一下我的经历:

每当您发现自己想知道如何完成此类任务时,请退后一步,想知道数据建模的改进是否会改善您的情况。

相反,您可以使用Interests中的新模型User_interestmany-to-many field替换所有这些字段。这种方式排序是小菜一碟,而且你有动态利益与硬编码。

当在表单中呈现多对多字段时,使用ModelChoiceField,它将QuerySet作为其第一个可以以任何方式排序的参数。