如何获取实体';在应用程序引擎上使用django Nonl时的s键

如何获取实体';在应用程序引擎上使用django Nonl时的s键,django,google-app-engine,django-models,django-nonrel,Django,Google App Engine,Django Models,Django Nonrel,我使用的是django nonrel(http://www.allbuttonspressed.com/projects/djangoappengine)在谷歌应用程序引擎上。我有我的模型等设置,一切都很好。不过我有一个问题。我希望能够访问实体的密钥。给定一个名为“Review”的模型,我会执行Review.objects.get(pk=1).key(),它会抛出一个错误(AttributeError) 是否有任何方法可以获取给定实体的密钥,以便我可以使用它,而不是被迫使用pk/id?我想将密钥

我使用的是
django nonrel
(http://www.allbuttonspressed.com/projects/djangoappengine)在谷歌应用程序引擎上。我有我的模型等设置,一切都很好。不过我有一个问题。我希望能够访问实体的密钥。给定一个名为“Review”的模型,我会执行
Review.objects.get(pk=1).key()
,它会抛出一个错误(
AttributeError


是否有任何方法可以获取给定实体的密钥,以便我可以使用它,而不是被迫使用pk/id?我想将密钥用作unique&secret URL的唯一标识符(如果有人有更好的建议,我洗耳恭听)。

您可以通过调用object.key().id()来获取id,它在python中返回一个唯一的密钥。在模板中,您可以简单地调用object.key.id。然后您可以使用来获取对象

您可以通过调用object.key().id()来获取id,它在python中返回一个唯一的键。在模板中,您可以简单地调用object.key.id。然后您可以使用获取对象

您可以从元数据获取django Nonl上的主键:

评论。_meta.pk

或键名称: key=getattr(review,review.\u meta.pk.column)

显然,“id”字段的变化取决于您是在开发服务器上还是在生产服务器上。这就行了

参考:

您可以从元数据中获取django Norel的主键:

评论。_meta.pk

或键名称: key=getattr(review,review.\u meta.pk.column)

显然,“id”字段的变化取决于您是在开发服务器上还是在生产服务器上。这就行了

参考:
虽然键可能一眼就不可猜测,但它们决不应该被认为是秘密的,也许可以考虑在你的实体中存储一些独特的部分,以便在你的“秘密”URL中使用<代码> 1 \代码>不是一个密钥——它是一个ID,它只是一个密钥的一部分。下面的两个答案似乎不起作用。RISHABH-你有这个工作吗?虽然按键可能是不可猜测的,但决不应该被认为是秘密的,也许考虑在你的实体中存储一些独特的部分在你的“秘密”URL中使用<代码> 1 /代码>不是一个关键-它是一个ID,这只是一个键的一部分。下面的两个答案似乎不起作用。Rishabh-你让它工作了吗?这似乎不适用于
django nonrel
。取而代之的是,我把Chris说的话记下来,并根据一个唯一的字符串生成SHA1哈希。这似乎不适用于
django nonrel
。取而代之的是,我把Chris说的话记下来,并根据唯一的字符串生成SHA1哈希。主键与GAE键不同。主键与GAE键不同。