2013-12-07 217 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`語句後放: