Conjuntos de consultas de Django
Frecuentes
Visto 137 veces
2
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?
2 Respuestas
3
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
0
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 python django or haz tu propia pregunta.
Entiendo lo que dicen los documentos, pero luego, ¿cómo lo usaría en
forms.py
? - Roberto JohnstoneGracias... Lo entiendo ahora. Puedo implementarlo en
forms.py
conadvisor = UserModelChoiceField(queryset = User.objects.filter(groups__name='advisor'))
. Gracias a: stackoverflow.com/a/2959870/563247 - Roberto Johnstone