2012-03-20 46 views
0

你好,並提前謝謝你:Django窗體不保存到MySQL

我有一個表單,沒有保存輸入數據到MySQL數據庫。我沒有得到一個錯誤,那根本不是保存數據...

My Model: 

from django.db import models 
from django.forms import ModelForm 

class DraftInput(models.Model): 
    player_id = models.CharField(max_length=5) 

    def __unicode__(self): 
     return self.player_id 

class DraftInputForm(ModelForm): 
    class Meta: 
     model = DraftInput 

筆者認爲:

def player_draft_input_view(request): 
    if request.method == 'POST': 
     form = DraftInputForm(request.POST) 

     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/draft/') 

    else: 
     form = DraftInputForm() 

    return render_to_response('baseball/basic_draft_pick.html', { 'form': form, }, context_instance=RequestContext(request)) 

我的模板:

<!DOCTYPE html> 

<html lang="en"> 

    <head> 
     <title>Basic Draft Pick Page</title> 
    </head> 

    <body> 

     <form action="" method="POST">{% csrf_token %} 
      {{ form.as_p }} 
     <input type="submit" value="Draft" /> 
     </form> 

    </body> 

</html> 

我敢打賭,這是後話真的很簡單,我會踢我自己,但我一直在看這個代碼大約5小時了...

謝謝,

dp

+0

我沒有看到任何明顯的東西。您是否確認表單已填寫並且is_valid分支運行?我們需要追蹤問題出在窗體和視圖之間,還是視圖和數據庫之間。做任何其他形式保存到數據庫正確? – 2012-03-20 04:15:13

+0

我註釋掉了is_valid分支,行爲沒有改變。我沒有在django-toolbar上發現任何錯誤。這是迄今爲止我創建的唯一形式。我是一個新手,所以我不確定如何最好地解決問題,看看發生了什麼。 – dpbklyn 2012-03-20 11:32:14

+0

聽起來你的表單無效,因爲你的頁面沒有遵循你的重定向到/ draft /(btw,檢查url和reverse()文檔而不是硬編碼重定向)。無論如何 - 在任何地方添加打印語句以查看代碼實際發生的情況 - 驗證請求是否以POST方式進入,驗證表單是否有效(似乎不是),也可以添加一個else以表示有效並打印在表單域中。有些事情是不正確的,你可以去探索,找出它是什麼。 – 2012-03-20 17:43:38

回答

0

我知道這是我剛剛失蹤的事!在上面的代碼:

return render_to_response('baseball/basic_draft_pick.html', { 'form': form, }, context_instance=RequestContext(request)) 

應該是:

return render_to_response('baseball/basic_draft_pick.html', { 'form': form }, context_instance=RequestContext(request)) 

後{ '形式':形式}沒有逗號

我覺得自己很蠢,但欣慰的是,所捕獲的錯誤和不是別人...

謝謝大家!

dp

+0

好的工作。我甚至沒有注意到這一點。 – 2012-03-20 22:06:57