2010-06-08 11 views
5

OK, ecco la domanda.Come si specifica un ordine di valori nell'elenco a discesa in un Django ModelForm?

class UserForm(forms.ModelForm): 

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

In models.py classe User è definito come segue:

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

Sia team e related_projects sono rese con una discesa-box. I valori sono tutti i team esistenti nel sistema e tutti i progetti esistenti nel sistema. Va bene, ma sono ordinati solo per chiave primaria, e mi piacerebbe vederli ordinati alfabeticamente. Dove dovrei specificare l'ordine per i valori in un elenco a discesa?

+2

http://stackoverflow.com/questions/923799/reorder-users-in-django-auth – Amarghosh

+0

scoperto che questa domanda è già stato discusso su StackOverFlow (http://stackoverflow.com/questions/1474135/django-admin-ordering-of-foreignkey-and-manytomanyfield-relations-referencing-us), e anche trovato la soluzione qui: http: //code.djangoproject .com/ticket/6089 # comment% 3A8 Ci scusiamo per il vostro tempo, ragazzi, appena ho sollevato una domanda correttamente, ho trovato una soluzione in Google. – Graf

risposta

13

Dovresti specificare un override per il campo team e quindi dovresti riuscire a sovrascrivere l'ordine con il suo argomento queryset. Qui sto assumendo che la proprietà in Team su cui ordinare è name.

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

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

Si può leggere di più su ModelChoiceField qui: http://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield

+0

So che è tardi per il gioco, e un duplice, ma questa dovrebbe essere la risposta accettata. Grazie a @Oli! –

Problemi correlati