2009-05-06 59 views
-1

我已經寫了自定義的構造函數形式訪問數據的麻煩,整個窗體類看起來是這樣的:Django的:表單自定義類的構造函數,從request.POST

class UploadForm(forms.Form): 
    file = forms.FileField(label = "Plik") 

    def __init__(self, coto, naglowek, *args, **kwargs): 
     super(UploadForm, self).__init__(*args, **kwargs) 
     self.coto = coto 
     self.naglowek = naglowek 

提交表格時,在我看來,我有一些像

if request.method == 'POST': 
    form = UploadForm(request.POST, request.FILES) 
    if form.is_valid(): 
     add_form(request.FILES['file']) 
     return HttpResponseRedirect('uploaded/') 

的問題是,當我創造這樣在我看來形式,我不是過客科託naglowek,所以當我打電話form.is_valid() - >它返回false。

這passess它看起來像模板:

<table class="uploadform"> 
<form action="." method="POST" enctype="multipart/form-data"> 
{% for form in forms %} 
<tr> 
    <td>{{ form.naglowek }}</td> 
    <td>{{ form.file }}</td> 
    <td><input type="submit" name="{{ form.coto }}" id="{{ form.coto }}" value="Wyślij"></td> 
</tr> 
{% endfor %} 
</form> 
</table> 

我會的任何建議表示感謝。

[編輯] 我可能不會說這clearlly足夠了,但我會盡我所能:

當我提交此表,看來,我需要知道哪些提交按鈕被按下 - 我有許多人被分配到單一形式。從我所知道的,當我分配id提交按鈕時,應該可以在後期使用,對吧?訣竅是,這是不可用的。

我有兩個問題: *需要做什麼,如果我想知道哪個提交按鈕被按下?分配名稱是唯一的方法嗎? *我的邏輯有錯嗎?

+0

請把你的實際錯誤信息和回溯問題。 – 2009-05-06 12:39:38

回答

0
request.POST['coto'] 
request.POST['naglowek'] 

我想。

+0

我試過 - 它不工作。我可能會把這個弄糟,但我不知道它在哪裏。感謝您嘗試提供幫助。 – praavDa 2009-05-06 11:45:39

+0

可能你可以檢查你的html,看看實際提交的是什麼? – SilentGhost 2009-05-06 11:48:26

0

您已重新定義默認窗體構造函數並更改其參數順序。所以你必須用明確的參數命名實例化你的自定義窗體:

​​
2

你的問題是一團糟。有代碼,並有另一個問題的編輯。編輯問題與標題無關。

請更新此問題爲您的問題。

如果您有多個提交按鈕,則必須爲它們指定不同的名稱或值(或兩者)。這是我們的代碼,它使用不同的值來區分哪個按鈕被點擊。

 <form method="post" action="." enctype="multipart/form-data"> 
      <input type="hidden" name="object_id" value="{{e.id}}"/> 
      {% ifequal object.workflow "uploaded" %} 
      <input type="submit" name="action" value="Validate"/> 
      <br/> 
      <input type="submit" name="action" value="Delete"/> 
      {% endifequal %} 
      {% ifequal object.workflow "validated" %} 
      <input type="submit" name="action" value="Load"/> 
      {% endifequal %} 
      {% ifequal object.workflow "processed" %} 
      <input type="submit" name="action" value="Undo"/> 
      {% endifequal %} 
      {% ifequal object.workflow "failed" %} 
      <input type="submit" name="action" value="Validate"/> 
      {% endifequal %} 
     </form> 

視圖功能有這樣的事情:

  if request.POST['action'] == "Delete": 

改變基礎上,按鈕的動作。

相關問題