2011-10-03 29 views
0

事情是這樣的。我有一個名爲User的模型和一個用於統計頁面訪問次數的屬性計數器。因此,如果用戶已經存在,我要查詢了數據庫,併爲用戶只在櫃檯增加。否則,請創建一個新用戶。 get方法中有一個煩人的錯誤。我怎麼能超越它? Django的查詢不能

if request.method == 'POST': 
     form = UserForm(request.POST) 
     if form.is_valid(): 
      u = form.save() 
      try: 
       obj = User.objects.get(user=u.user) 
       obj.counter += 1 
       obj.ipaddress = request.META['REMOTE_ADDR'] 
       obj.save() 
      except Statistic.DoesNotExist: 
       ip = request.META['REMOTE_ADDR'] 
       obj = User(user=u.user, counter=1, ipaddress=ip) 
       obj.save() 
      return {'status': 'OK'} 
     else: 
      return {'errors': form.errors} 
    return {'status': 'NOT OK. GET method'}
這是錯誤
get() returned more than one User -- it returned 2! Lookup parameters were

+2

什麼是你討厭的錯誤?你不應該是'除了User.DoesNotExist'? – dm03514

回答

0

這意味着有多個用戶與數據庫中的查詢匹配。應該只使用get來提取一個。看來你已經爲此編碼了,但我認爲你正在捕捉錯誤的異常類型。嘗試改變

except Statistic.DoesNotExist: 

from django.core.exceptions import DoesNotExist 
except DoesNotExist: 
+1

或'User.DoesNotExist' –

+0

嗯,是的。這很容易。 –

+0

我發現它提高了可讀性。只是個人偏好的頭腦。 –