Можно ли получить объект по его первичному ключу в django-nonrel / Google App Engine? - PullRequest
1 голос
/ 28 сентября 2011

Я пытаюсь получить объект модели, как показано ниже:

(r'^album/(?P<album_id>\w+)/$', 'core.views.album'),

def album(request, album_id):
    album = Album.objects.get(pk=album_id)

Проблема в том, что PK не является целым числом:

>>> a = Album.objects.all()[0]
>>> a.pk
46L

Ошибка I 'когда я запускаю представление:

ValueError at /album/46L/
invalid literal for int() with base 10: '46L'

Идеи?Благодаря.

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

46L - это длинное целое число, а не строка, поэтому вы должны рассматривать его как число, а не слово в urls.py:

.
(r'^album/(?P<album_id>\d+)/$', 'core.views.album'),

тогда URL /album/46/ в итоге вызовет:

def album(request, album_id):
    #album = Album.objects.get(pk=46L)
    album = Album.objects.get(pk=album_id)

Или, если вам по какой-то причине необходимо сохранить букву 'L' в URL-адресе, перед тем, как использовать ее, используйте ее на длительное время:

album = Album.objects.get(pk=long(album_id))
0 голосов
/ 28 сентября 2011

Проблема не связана с URL-адресами / представлениями. Каждый раз, когда я выполнял «runserver», мое локальное хранилище данных стиралось. Поэтому данные, которые я смог получить при использовании «оболочки», были синхронизированы неправильно.

Это произошло потому, что по какой-то странной причине я прокомментировал эту строку (и забыл об этом) на settings.py:

AUTOLOAD_SITECONF = 'indexes'
...