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

Gra*_*raf 6 django django-forms

好的,这是问题所在.

class UserForm(forms.ModelForm):   

    class Meta:
        model = User
        fields = ('team',  'related_projects') 
Run Code Online (Sandbox Code Playgroud)

models.py所述User类被定义为如下:

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

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

Oli*_*Oli 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') 
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关ModelChoiceField的更多信息:http://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield