2016-01-06 47 views
0

我想要做的是,當用戶點擊span中包含的圖標時,我通過javascript添加作者的字段。但問題是,在表單提交時通過javascript添加的字段既不是在表單對象中,也不是在request.POST對象中獲得的。 我有兩個問題,主要是:通過JavaScript添加提交通過JavaScript添加到請求對象的字段

  1. 我希望能夠到值傳遞給在地裏的服務器,並能夠訪問他們在views.py
  2. 我也想知道如果有一些更好的方法來做到這一點。

views.py

def addbook(request): 
    if request.method=='POST': 
     print(request.POST) 
     form=BookForm(request.POST) 
     # process accordingly. 
    else: 
     form = BookForm() 
     return render(request,'book.html',{'form':form}) 

forms.py

class BookForm(forms.Form): 
    author_name=forms.CharField(max_length=20) 

book.html

<form action='' method="POST"> 
    <div id='authorfield'>{{ form.author_name }}</div> 
    <a href='#'><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a> 
</form> 

book.js

$('span').click(function(e) { 
    e.preventDefault(); 
    $("#authorfield").after(" <div><input type='text' class='form-control' placeholder='Author name'></div>"); 

}); 

回答

2

您需要在由JS添加的input元素中具有name屬性。

但是我不確定這會做你想要的;你已經有了一個author_name字段,所以目前還不清楚你爲什麼要添加另一個字段。

+0

我希望能夠爲用戶想要的author_name具有儘可能多的字段(也可能有多個作者)並且添加名稱字段也是一個問題,因爲名稱必須是唯一的,並且用戶添加了兩個字段將會有相同的名字。 另外,如果我添加名稱屬性,我將能夠在views.py中訪問它呢? –

+1

聽起來像你真的在尋找[formsets](https://docs.djangoproject.com/en/1.9/topics/forms/formsets/)。 –

+0

「我希望能夠爲用戶需要的author_name提供儘可能多的字段(也可能有多個作者)」=>那麼你的模型是錯誤的 - 你應該有一個'Author'模型和一個多對多與'Book'的關係。 –