Los valores distintos de Django Query funcionan pero no puedo usar el resultado de la consulta

Tengo una columna de tabla en la que algunos valores están escritos doble o triple. Quiero tener una consulta distinta.

Lo intenté

staff = Staff.objects.all().values('person').distinct() for k in staff: j = k.person print j,k 

Obtengo “el objeto dict no tiene atributo como persona” para k.persona

Y me sale k me da un resultado como

 {'person': 778L} {'person': 779L} {'person': 780L} {'person': 781L} {'person': 782L}` 

¿Sabes cómo puedo obtener el valor de la persona?

No es problema con distinct sino con values() . values() le da dictado de los valores que ha solicitado. Y para obtener el atributo de dict puede usar dict['attr_name'] .

Así que puedes probar esto:

 staff = Staff.objects.all().values('person').distinct() for k in staff: j = k['person'] print j,k 

@ Rohan tiene razón. dict['attr_name'] te dará lo que quieres.

 staff = Staff.objects.all().values('person').distinct() print staff.query #it returns: #SELECT DISTINCT "staff"."person" FROM "staff" 

Además de esto, si usa este parche , puede lograr esto como la siguiente estructura:

 staff = Staff.objects.all().distinct('person') for pr in staff: print pr['person']