2013-12-07 171 views
0

在新的Django和蟒蛇,并不明白这个问题。未解决的参考 - django

我有一个模型:

class User(models.Model): 
    nick = models.CharField(max_length=50) 
    age = models.IntegerField() 

,我想检查是否已经是具有相同名称的用户输入:

def addUser(request): 

    nick1 = request.GET['nick'] 
    age1 = request.GET['age'] 

    newUser = User() 

    newUser.nick = nick1 
    newUser.age = age1 
    if User.objects.filter(nick=newUser.nick).count()>0 

    newUser.save() 

我不能继续,因为它的if语句告诉我有一个

未解决的参考 'NEWUSER'

我在这里做错了什么?

+1

请修正你的代码,因为你缺少冒号':'如果和缩进问题,不清楚你的逻辑是错误的,还是只是代码 – alko

+0

你必须接受一个答案,如果它适合你。 –

回答

3

我建议清理你的格式。假设你的格式在代码中是正确的,而且没有正确地转换为堆栈溢出,那看起来应该是可行的。

需要注意的是一个更好的办法可能是:

newUser,created = User.objects.get_or_create(nick=nick1) 
if created: #note the colon at the end and the next lines are indented 
    newUser.age = age 
    newUser.save() 
    # e.g. return response indiciating user was created 
else: 
    # e.g. return a response indiciating that nick already taken 

这假定有一个给定的缺口正好1用户(会抛出一个异常,如果这是不正确的,这可能是也可能不是你想)。另外请注意,如果您的体验与我的相似,当您提高对将要称为Django Tao的理解时,您会发现更好的方法来使用模板做很多事情,所以即使上面的代码是过多的代码来写。

+0

(注意,那家伙在我发布后固定了格式,但留在了原来的位置): – Foon

+0

目前尚不清楚OP在其代码中的含义:) – alko

+0

你是什么意思我的格式?什么是OP? – user3078714

0

你要做的:

def adduser(request): 
    nick1 = request.GET['nick'] 
    age1 = request.GET['age'] 

    if User.objects.filter(nick=nick1)>0: 
     # retur response to user exist 
    else: 
     User.objects.create(nick=nick1,age=age1) 
     # return response user created 

记住要使用正确的缩进Python和总是每个if, or for`语句后放: