Как указать порядок значений в раскрывающемся списке в Django ModelForm? - PullRequest
6 голосов
/ 08 июня 2010

ОК, вот вопрос.

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)

Оба team и related_projectsотображаются в виде выпадающего списка.Значения - это все существующие команды в системе и все существующие проекты в системе.Все в порядке, но они упорядочены только по первичному ключу, и я бы хотел, чтобы они были упорядочены по алфавиту.Где я должен указать порядок значений в раскрывающемся списке?

1 Ответ

14 голосов
/ 08 июня 2010

Вам необходимо указать переопределение для поля 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...