Как получить ключ объекта при использовании django-nonrel в App Engine

#django #google-app-engine #django-models #django-nonrel

#django #google-app-engine #django-модели #django-nonrel

Вопрос:

Я использую django-nonrel (http://www.allbuttonspressed.com/projects/djangoappengine ) в Google App Engine. У меня есть настройки моих моделей и т.д., И все работает отлично. Однако у меня возник один вопрос. Я хочу иметь возможность доступа к ключу объекта. Учитывая модель с именем ‘Review’, я делаю, Review.objects.get(pk = 1).key() что выдает ошибку ( AttributeError ).

Есть ли какой-либо способ, которым я могу получить ключ данного объекта, чтобы я мог использовать его вместо того, чтобы быть вынужденным использовать pk / id? Я хочу использовать ключ в качестве уникального идентификатора для уникальных и секретных URL-адресов (если у кого-то есть лучшее предложение для достижения этого, я весь внимание).

Комментарии:

1. Хотя ключи могут быть неочевидны с первого взгляда, их ни в коем случае не следует считать секретными , возможно, стоит рассмотреть возможность сохранения хэшей SHA1 некоторой уникальной части ваших объектов для использования в ваших «секретных» URL-адресах

2. 1 это не ключ — это идентификатор, который является только частью ключа.

3. Два приведенных ниже ответа, похоже, не работают. Ришабх — У тебя получилось это сделать?

Ответ №1:

Вы можете получить идентификатор, вызвав object.key().id(), который возвращает уникальный ключ внутри python.В шаблонах вы можете просто вызвать object.key.id . Затем вы можете использовать get_by_id для получения объекта

Комментарии:

1. Похоже, это не работает с django-nonrel . Вместо этого я беру на заметку то, что сказал Крис, и генерирую хэши SHA1 на основе уникальной строки.

Ответ №2:

Вы можете получить свой первичный ключ в django-nonrel из метаданных:

review._meta.pk

или для имени ключа: key=getattr(обзор,review._meta.pk.column)

По-видимому, поле ‘id’ изменяется в зависимости от того, находитесь ли вы на сервере разработки или на производственном сервере. Итак, это работает!

ссылка:http://www.b-list.org/weblog/2007/nov/04/working-models

Комментарии:

1. Первичный ключ не совпадает с ключом GAE.