开发者

How do I specify an order of values in drop-down list in a Django ModelForm?

开发者 https://www.devze.com 2023-01-03 04:44 出处:网络
OK, here is the question. class UserForm(forms.ModelForm): class Meta: model = User fields = (\'team\',\'related_projects\')

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

0

精彩评论

暂无评论...
验证码 换一张
取 消