是否可以通过django-nonrel / Google App Engine中的主键获取对象?

时间:2011-09-28 01:39:27

标签: python django google-app-engine django-nonrel

我正在尝试检索模型对象,如下面的代码:

(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

运行视图时出现的错误:

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

想法?感谢。

2 个答案:

答案 0 :(得分:1)

46L是一个长整数,而不是字符串,所以你应该把它当作数字而不是urls.py中的单词:

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

然后网址/album/46/最终会调用:

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

或者,如果您因某种原因需要在网址中保留“L”,请在使用之前将其投放一段时间:

album = Album.objects.get(pk=long(album_id))

答案 1 :(得分:0)

这个问题与网址/观点无关。每次我执行“runserver”时,我的本地数据存储区都被删除了。因此,使用“shell”时我能够检索的数据未正确同步。

发生这种情况是因为,出于某种奇怪的原因,我在settings.py上评论了这一行(并忘了它):

AUTOLOAD_SITECONF = 'indexes'