Getting Objects by id in Django
11,542
Solution 1
The problem is that 'id'
is a string and you need to pass an integer here:
post=Meekme.objects.get(id='id')
It should most likely look like this:
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))
where meekme_id
is an integer that is part of the URL. Your URL configuration should contain:
url(r'^example/(?P<meekme_id>\d+)/$', 'example.views.cribdetail'),
When you visit example/3/
, that means Django will call the view cribdetail
with the value 3 assigned to meekme_id
. See the Django URL documentation for more details.
Solution 2
the error message is saying 'id' is integer but you are passing string .
Author by
picomon
Updated on August 19, 2022Comments
-
picomon over 1 year
I'm trying to get data by id in my django app. The problem is that I don't know the kind of id the user will click on. I tried adding the below code in my views but I'm getting this error:
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
Views
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))
What I'm I missing?
-
picomon almost 12 yearsAfter following your instruction, I'm getting this error: NoReverseMatch at /search/ Reverse for 'meebapp.views.cribdetail' with arguments '()' and keyword arguments '{}' not found. Urlconf: url(r'^cribme/(?P<meekme_id>\d+)/$', 'meebapp.views.cribdetail'), In Models: def get_absolute_url(self): return ('meebapp.views.cribdetail', (),[str(self.id)]) In Template: <a href="{% url meebapp.views.cribdetail %}"> What I'm I missing?
-
Simeon Visser almost 12 years@picomon: In that case you're giving incorrect parameters to the reverse function of Django. You need to make sure that the name and values for reversing a URL are correct and that there is indeed a URL with that name and those parameters.
-
picomon almost 12 yearsCan I input id alone in the parameters? BTW: Do check my edit in the above comment.
-
Nilesh almost 12 yearsYou have to pass id as integer. Simeon write for example only.
-
Simeon Visser almost 12 yearsChange the
get_absolute_url
to the following:return ('meebapp.views.cribdetail', (), {'meekme_id': self.id})
. Also, in the template you need to add the id, so it would be{% url meebapp.views.cribdetail post.id %}
. -
picomon almost 12 yearsanother error: NoReverseMatch at /search/ Reverse for 'meebapp.views.cribdetail' with arguments '('',)' and keyword arguments '{}' not found
-
picomon almost 12 yearskindly check out my question here: stackoverflow.com/questions/11264655/…