2014-03-26 83 views
0

我想從我的Django模型表單發佈數據到我的數據庫,但沒有任何運氣。我可以從管理員創建並在頁面上顯示,但似乎無法正確傳遞我的信息。評論與學校之間有一個外鍵,我知道這個外鍵是有效的。這是我的模型,視圖和html。不能讓Django模型表單傳遞信息到數據庫

models.py

from django.forms import ModelForm 

class Comment(models.Model): 
    school = models.ForeignKey(Schools) 
    created = models.DateTimeField(auto_now_add=True) 
    author = models.CharField(max_length=60) 
    body = models.TextField() 

class CommentForm(ModelForm): 
    class Meta: 
     model = Comment 
     fields = ['author', 'body', 'school'] 

views.py

EDITED

我還加了註釋對象創建,就像另一件事嘗試。

from my_app.models import Comment, CommentForm 

if request.method == 'POST': 
    form = CommentForm(request.POST) # A form bound to the POST data 
    if form.is_valid(): # All validation rules pass 
     author = form.cleaned_data['author'] 
     body = form.cleaned_data['body'] 
     school = form.cleaned_data['school'] 
     form.save() 
     content = Comment.objects.create(school = school, author = author, body = body) 

我已經在這個視圖上嘗試了很多變化,但還沒有任何運氣。

HTML

<form action="/" method="POST">{% csrf_token %} 
    <p>{{ form.body }}</p> 
    <div id="submit"><input type="submit" value="Submit"></div> 
</form> 

回答

0

答:您必須指定{{form.as_p}}{{form.as_table}}或者乾脆{{form}}代替{{form.body}}。查看文檔以獲取更多詳細信息:https://docs.djangoproject.com/en/dev/topics/forms/

B. cleaned_data需要Comment類的屬性。所以,改變:body = form.cleaned_data['comment']body = form.cleaned_data['body']

C.與Django玩得開心。

編輯

移動的if request.method == 'POST':一個新的方法中,即register_comment

def register_comment: 
    if request.method == 'POST': 
     form = CommentForm(request.POST) # A form bound to the POST data 
     if form.is_valid(): # All validation rules pass 
      author = form.cleaned_data['author'] 
      body = form.cleaned_data['body'] 
      school = form.cleaned_data['school'] 
      form.save() 

修改urls.py

urlpatters = patterns('', 
    # Some others views here 
    url(r'^new-comment/$', 'app_name.views.register_comment', name="new_comment"), 
    # Maybe Some others views here 
) 

打開Web瀏覽器,並轉到:http://127.0.0.1:8000/new-comment/

+0

我已經改變了你所說的我應該但仍然無濟於事......我正在編輯以顯示我改變了什麼。 – user1855009

+0

Hi @ user1855009,我編輯了我的答案。我希望這對你有所幫助。 – slackmart

相關問題