Conjuntos de consultas de Django

Tengo lo siguiente en uno de mis formularios:

self.fields['advisor'].queryset = User.objects.filter(groups__name='advisor')

El único problema es que muestra el username en el cuadro desplegable. Lo que me gustaría hacer es mostrar el first_name luego last_name para que sea más legible para los humanos.

¿Alguna idea?

preguntado el 22 de mayo de 12 a las 20:05

2 Respuestas

La ModelChoiceField tiene un label_from_instance método que se puede cambiar en una subclase para usar algo que no sea el modelo __unicode__ método. https://docs.djangoproject.com/en/1.3/ref/forms/fields/#django.forms.ModelChoiceField.empty_label

contestado el 22 de mayo de 12 a las 21:05

Entiendo lo que dicen los documentos, pero luego, ¿cómo lo usaría en forms.py? - Roberto Johnstone

Gracias... Lo entiendo ahora. Puedo implementarlo en forms.py con advisor = UserModelChoiceField(queryset = User.objects.filter(groups__name='advisor')). Gracias a: stackoverflow.com/a/2959870/563247 - Roberto Johnstone

De acuerdo con esta doctor, prueba este código rápido y sucio:

u = User.objects.filter(groups__name='advisor')
self.fields['advisor'].queryset = u.get_first_name_display() + " " + u.get_last_name_display()

contestado el 22 de mayo de 12 a las 20:05

hummm... no le gusta get_first_name_display() - Roberto Johnstone

Es el usuario predeterminado que se envía con django: Roberto Johnstone

Podrías mirar usando el método get_full_name, pero solo se puede invocar en un solo objeto de usuario, no en un conjunto de consultas. - marconio

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.