2011-05-16 46 views
2

使用Django的nonrel我使用django-nonrel(http://www.allbuttonspressed.com/projects/djangoappengine)在谷歌應用程序引擎時,如何獲得一個實體的鍵。我有我的模型等設置,一切都很好。我有一個問題,但。我希望能夠訪問實體的密鑰。給定一個名爲'Review'的模型,我做了Review.objects.get(pk = 1).key(),它引發了一個錯誤(AttributeError)。在App Engine上

有什麼辦法,我可以得到給定的實體的鍵,這樣我可以使用它,而不是被迫使用PK/ID?我想使用的密鑰作爲唯一&祕密URL的唯一標識符(如果有人有更好的建議,以實現這一目標,我所有的耳朵)。

+2

雖然鍵可能是*不可猜測*一目瞭然,他們絕不應該被認爲是*祕密*,也許考慮將[SHA1哈希(http://docs.python.org /library/hashlib.html#module-hashlib)在你的實體一些獨特的部分在你的「祕密」的URL使用 – 2011-05-16 20:54:09

+0

'1'不是關鍵 - 這是一個ID,這僅僅是一個關鍵的組成部分。 – 2011-05-17 04:05:00

+0

下面的兩個答案似乎不起作用。 Rishabh - 你有這個工作嗎? – speedplane 2011-11-14 02:10:31

回答

0

你可以通過調用object.key獲得ID()。ID()返回內部蟒蛇。在模板的唯一關鍵,你可以簡單地調用object.key.id。然後你可以使用get_by_id獲取對象

+0

這似乎不適用於'django-nonrel'。我將採用Chris所說的內容並根據唯一的字符串生成SHA1散列。 – 2011-05-18 21:47:09