首页 > 解决方案 > Django 表单设置表单的名称

问题描述

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

这是我的模型形式:

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

我知道如何在表单中设置字段的名称属性,也有很多例子

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

在 html 方面,我将使用这个属性:https ://www.w3schools.com/tags/att_form_name.asp

我需要在我的模板中使用 html 表单名称属性,但是我找不到如何在 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 类中设置这个属性。

我怎样才能做到这一点 ?

标签: htmldjangoformsdjango-formsattributes

解决方案


只需使用 helper 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']

推荐阅读