Cómo obtener la clave de una entidad cuando se usa django-nonrel en App Engine

Estoy usando django-nonrel (http://www.allbuttonspressed.com/projects/djangoappengine) en Google App Engine. Tengo mis modelos, etc. configurados y todo funciona muy bien. Sin embargo, tenía una pregunta. Quiero poder acceder a la clave de una entidad. Dado un modelo llamado 'Revisión', lo hago Review.objects.get(pk = 1).key() que arroja un errorAttributeError).

¿Hay alguna forma de que pueda obtener la clave de la entidad dada para poder usarla en lugar de ser forzado a usar el pk / id? Quiero usar la clave como un identificador único para URLs únicas y secretas (si alguien tiene una mejor sugerencia para lograr esto, soy todo oídos).

preguntado el 16 de mayo de 11 a las 20:05

Aunque las claves pueden ser inconcebible de un vistazo, de ninguna manera deben considerarse secreto, tal vez considere almacenar Hash SHA1 de alguna parte única en sus entidades para usar en sus URL 'secretas' -

1 no es una clave, es una identificación, que es solo una parte de una clave. -

Las dos respuestas a continuación no parecen funcionar. Rishabh - ¿Conseguiste que esto funcionara? -

2 Respuestas

Puede obtener id llamando a object.key (). Id () que devuelve una clave única dentro de Python. En las plantillas, simplemente puede llamar a object.key.id. Entonces puedes usar get_by_id para conseguir el objeto

contestado el 17 de mayo de 11 a las 11:05

Esto no parece funcionar con django-nonrel. En cambio, estoy tomando en cuenta lo que dijo Chris y generando hashes SHA1 basados ​​en una cadena única. - Rishabh Manocha

Puede obtener su clave principal en django-nonrel a partir de los metadatos:

review._meta.pk

o para el nombre de la clave: key = getattr (revisión, revisión._meta.pk.column)

Aparentemente, el campo 'id' cambia dependiendo de si estás en el servidor de desarrollo o de producción. ¡Entonces esto funciona!

referencia: http://www.b-list.org/weblog/2007/nov/04/working-models/

contestado el 19 de mayo de 11 a las 04:05

La clave principal no es la misma que la clave GAE. - avión de velocidad

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