2011-10-03 65 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

我发现它提高了可读性。只是个人偏好的头脑。 –