Django Forms设置表单名称

时间:2019-06-27 11:09:54

标签: html django forms django-forms attributes

如何使用模型表单设置表单的名称

这是我的模型表格:

class DetayModelForm(forms.ModelForm):
  class Meta:
    model = Detay
    fields = [ 'yazi', 'tip', 'kullanimAdet']

我知道如何以表格的形式设置字段的名称属性,也有很多示例

但是我真的真的找不到如何设置表单自己的名称,不是表单中的字段,正是表单自己的名称属性;在ModelForm类中。

在html端,我将使用以下属性:https://www.w3schools.com/tags/att_form_name.asp

我需要在模板中使用html表单 name 属性,但是我无法在ModelForm类中找到如何直接将此属性添加到表单中。

我试图在像这样的ModelForm类中使用init:

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.name = 'DetayFormu'

但是在html方面,表单仍然没有name属性。

我也知道,是的,我可以像这样在模板中设置此属性:

<form method="post" name="DetayFormu">
  {% csrf_token %}
  {{ form|crispy }}
  <button type="submit" class="btn btn-primary">Sign in</button>
</form>
  

但是我真的很奇怪如何在ModelForm类中设置此属性   直接

我该怎么做?

1 个答案:

答案 0 :(得分:1)

只需使用辅助属性attr即可添加任何新属性

from crispy_forms.helper import FormHelper
class DetayModelForm(forms.ModelForm):  
  def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_action = 'url'
        super(DetayModelForm, self).__init__(*args, **kwargs)
        self.helper.attrs = {'name': 'DetayFormu','autocomplete':'off'}
  class Meta:
    model = Detay
    fields = [ 'yazi', 'tip', 'kullanimAdet']