django - Phone_info matching query does not exist -


views.py

def add_phone(request):     user=request.user     try:         phone = phone_info.objects.get(user=user.id)     except phone_info.doesnotexist:         phone = none     phoneform = phoneform({'user':request.user})     phone = phone_info.objects.get(user=request.user)     phoneform = phoneform(instance=phone)     if request.method=='post':         phoneform = phoneform(request.post,instance=phone)         if phoneform.is_valid():             phone=phoneform.save(commit=false)             phone.save()             return redirect('/member/contact-list/')      return render_to_response('incident/add_phone.html',     {     'about_menu': true,     'phoneform' :phoneform     },     context_instance=requestcontext(request)) 

models.py is

class phone_info(models.model):     user = models.foreignkey(user, null=true)     name1 = models.charfield('name', max_length=100, null=true, blank=true)     number1 = models.charfield('number',max_length=20, null=true, blank=true)     name2 =  models.charfield('name', max_length=100, null=true, blank=true)     number2 = models.charfield('number', max_length=20, null=true, blank=true) 

traceback

environment:   request method: request url: http://192.168.100.10/member/add-phone/  django version: 1.3.7 python version: 2.7.0 installed applications: ['django.contrib.auth',  'django.contrib.contenttypes',  'django.contrib.sessions',  'django.contrib.sites',  'django.contrib.messages',  'django.contrib.staticfiles',  'django.contrib.admin',  'django.contrib.admindocs',  'django.contrib.humanize',  'django.contrib.staticfiles',  'south',  'collect',  'incident'] installed middleware: ('django.middleware.common.commonmiddleware',  'django.contrib.sessions.middleware.sessionmiddleware',  'django.middleware.csrf.csrfviewmiddleware',  'django.contrib.auth.middleware.authenticationmiddleware',  'django.contrib.messages.middleware.messagemiddleware',  'django.middleware.transaction.transactionmiddleware',  'django.middleware.cache.fetchfromcachemiddleware') 

edit:

traceback: file "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response   111.                         response = callback(request, *callback_args, **callback_kwargs) file "/root/projects/ir/incident/views.py" in add_phone   648.     phone = phone_info.objects.get(user=request.user) file "/usr/lib/python2.7/site-packages/django/db/models/manager.py" in   132.         return self.get_query_set().get(*args, **kwargs) file "/usr/lib/python2.7/site-packages/django/db/models/query.py" in   349.                     % self.model._meta.object_name)  exception type: doesnotexist @ /member/add-phone/ exception value: phone_info matching query not exist. 

i not able insert or update data database,getting following error"phone_info matching query not exist"

can 1 suggest me went wrong here. edit:i updsated traceback.the error in 6th line.any idea problem.

<model_name> matching query not exist means reads. record you're looking for, doesn't exist. so, make sure data exists @ first place.

and code has come loose ends -

user=request.user try:     # line generating error because record doesn't exists[1]     phone = phone_info.objects.get(user=user.id) except phone_info.doesnotexist:     phone = none phoneform = phoneform({'user':request.user}) # you're making same query [1] here, knowing might not exist. redundant, illogical. phone = phone_info.objects.get(user=request.user) 

i'm assured new django, saying every time doesn't things. logic right. try get(), if there exception, create record. you're initiating phoneform thrice. data gets overwritten. fix that.

django has 1 of comprehensive documentation. go through it.

ps: bonus hint, coding convention right. @ 1 place you're querying phone_info.objects.get(user=user.id) assigned user = request.user, right next it, you're querying phone_info.objects.get(user=request.user). not just broke convention of using id query, earlier line, used request.user again, although have variable it's assigned. while both queries work, it's necessary follow convention when write code, makes more debuggable later on.


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -