2009-05-06 33 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": 

改变基础上,按钮的动作。

相关问题