在Django中通过id获取对象

时间:2012-06-29 09:31:14

标签: python django django-views django-urls

我正在尝试通过我的django应用中的id获取数据。问题是我不知道用户点击的id类型。我尝试在我的视图中添加以下代码,但我收到此错误:

 ValueError at /findme/

 invalid literal for int() with base 10: 'id'

 Request Method:    GET
 Request URL:   http://127.0.0.1:8000/findme/
 Django Version:    1.4
 Exception Type:    ValueError
 Exception Value:   invalid literal for int() with base 10: 'id'

 Exception Location:    C:\Python27\lib\site-packages\django\db\models\fields\__init__.py in get_prep_value, line 537
 Python Executable:     C:\Python27\python.exe
  Python Version:   2.7.3

浏览

from meebapp.models import Meekme

def cribdetail(request):
    post=Meekme.objects.get(id='id')
    return render_to_response('postdetail.html',{'post':post, 'Meekme':Meekme},context_instance=RequestContext(request))

我错过了什么?

2 个答案:

答案 0 :(得分:4)

问题是'id'是一个字符串,你需要在这里传递一个整数:

post=Meekme.objects.get(id='id')

它应该看起来像这样:

def cribdetail(request, meekme_id):
    post=Meekme.objects.get(id=meekme_id)
    return render_to_response('postdetail.html',{'post':post, 'Meekme':Meekme},context_instance=RequestContext(request))

其中meekme_id是一个整数,是URL的一部分。您的URL配置应包含:

url(r'^example/(?P<meekme_id>\d+)/$', 'example.views.cribdetail'),

当您访问example/3/时,这意味着Django将调用视图cribdetail,并将值3分配给meekme_id。有关更多详细信息,请参阅Django URL documentation

答案 1 :(得分:1)

错误消息是'id'是整数 但是你正在传递字符串。