2010-06-08 12 views
5

OK, aquí está la pregunta.¿Cómo especifico un orden de valores en la lista desplegable en un Django ModelForm?

class UserForm(forms.ModelForm): 

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

En models.py la clase User se define como sigue:

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

Tanto team y related_projects se representan como un menú desplegable-box. Los valores son todos los equipos existentes en el sistema y todos los proyectos existentes en el sistema. Está bien, pero solo están ordenados por clave principal, y me gustaría verlos ordenados alfabéticamente. ¿Dónde debería especificar el orden de los valores en una lista desplegable?

+2

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

+0

encontrado que esta pregunta ya ha sido discutido en StackOverFlow (http://stackoverflow.com/questions/1474135/django-admin-ordering-of-foreignkey-and-manytomanyfield-relations-referencing-us), y también encontró la solución aquí: http: //code.djangoproject .com/ticket/6089 # comment% 3A8 Perdón por tomarse su tiempo, muchachos, justo después de plantear una pregunta correctamente, descubrí una solución en Google. – Graf

Respuesta

13

Debería especificar una anulación para el campo team y luego debería poder anular la orden con su argumento queryset. Aquí estoy suponiendo que la propiedad en Team que desea ordenar es name.

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

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

Puede leer más sobre ModelChoiceField aquí: http://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield

+0

Sé que es tarde para el juego, y una víctima, pero esta debería ser la respuesta aceptada. Gracias @Oli! –

Cuestiones relacionadas