如何在Django ModelForm的下拉列表中指定值的顺序?

时间:2010-06-08 12:19:47

标签: django django-forms

好的,这是问题所在。

class UserForm(forms.ModelForm):   

    class Meta:
        model = User
        fields = ('team',  'related_projects') 

models.py中,User类的定义如下:

class User (models.Model):
    team = models.ForeignKey(Team, verbose_name = _('team'))
    related_projects = models.ManyToManyField(Project, blank = True)

teamrelated_projects都会呈现为下拉框。值是系统中的所有现有团队以及系统中的所有现有项目。没关系,但它们只是按主键排序,我希望看到它们按字母顺序排序。我应该在下拉列表中指定值的排序?

1 个答案:

答案 0 :(得分:14)

您需要为team字段指定覆盖,然后您应该能够使用其queryset参数覆盖该顺序。在这里,我假设您要排序的Team中的属性为name

class UserForm(forms.ModelForm):
    team = forms.ModelChoiceField(queryset=Team.objects.order_by('name'))

    class Meta:
        model = User
        fields = ('team',  'related_projects') 

您可以在此处详细了解ModelChoiceField:http://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield