How do I specify an order of values in drop-down list in a Django ModelForm?
OK, here is the question.
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('team', 'related_projects')
In models.py
the User
class is defined as follows:
class User (models.Model):
team = models.ForeignKey(Team, verbose_name = _('team'))
related_projects = models.ManyToManyField(Project, blank = True)
Both team
and related_projects
are rendered as a dropdown-box. The values are all the existing teams in the system, and all the existing projects in the system. That's all right, but they're only ordered开发者_如何学JAVA by primary key, and I would like to see them ordered alphabetically. Where should I specify ordering for values in a drop-down list?
You'd need to specify an override for the team
field and then you should be able to override the order with its queryset
argument. Here I'm assuming the property in Team
you want to sort on is name
.
class UserForm(forms.ModelForm):
team = forms.ModelChoiceField(queryset=Team.objects.order_by('name'))
class Meta:
model = User
fields = ('team', 'related_projects')
You can read more about ModelChoiceField here: http://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield
精彩评论