2011-10-25 21 views
11

Tengo un accesorio de objetos de "Usuario" (solo las autorizaciones predeterminadas de Django), y estoy tratando de crear un accesorio de objetos "Perfil". Cada perfil tiene una relación de uno a uno con un objeto de usuario, y define algunas cosas más personalizadas para ese usuario.Django - Llaves foráneas en accesorios

Por lo que puedo decir, la forma normal de tratar con las teclas foráneas en un dispositivo es simplemente codificar la clave primaria del objeto extraño en el dispositivo. ¿Hay alguna manera de evitar hacer eso?

Básicamente, estoy tratando de tener algo como '"usuario": nombre de usuario' en el aparato en lugar de '"usuario": pk'.

¿Hay alguna manera de hacer esto?

Respuesta

8
+0

su solución no acaba de trabajo - por lo que yo puedo decir, el modelo auth.user no tiene ningún unique_together define por defecto, y por eso no puede usar claves naturales sin modificar ese archivo. Puedo lograr lo que quiero mediante la codificación en un valor de clave principal para cada uno en el dispositivo, pero eso parece asqueroso. ¿Me estoy perdiendo de algo? – numegil

+2

Bueno, Unique Together no es realmente el problema, el problema es que las claves naturales no están definidas para el modelo, que parece ser un error. Sí, hardcoding PK es lo que funciona por ahora. Perdón, malentendí un poco tu objetivo y lo leí como si estuvieras trabajando en tus propios modelos. –

+1

Por cierto, el UserManager de Django ahora define una clave natural para el nombre de usuario (a partir de 1.10, pero probablemente se remonta un largo camino.) – Eloff

Cuestiones relacionadas