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
Post a Comment