表单加载后更改字段必填属性

时间:2019-02-21 10:47:15

标签: django django-forms

我有一个表单( A ),其中一个字段取决于第二个表单( B )的选择值。

因此,根据 B 表单的选择字段中选择的内容,我需要该字段是否为必填字段。

当前,我已将 A 表单__init__方法中的field.required设置为False,并在请求中通过覆盖 B 表单来检查数据清除 A 的方法,并在必要时设置必填字段,但这一切都在单击提交按钮之后发生。显然,如果现在将该字段设置为必填,并且我在 B 中更改了选择字段的值,那么我将不再能够在 A 中将字段设置为不需要。因为它很简单,不允许我单击“提交”。

是否可以使其以某种方式工作?

我的表单:

class PublicationCreateForm(forms.ModelForm):

class Meta:
    model = Publication
    fields = ('title', 'event')

def __init__(self, *args, **kwargs):
    self.request = kwargs.pop('request', None)
    super(PublicationCreateForm, self).__init__(*args, **kwargs)
    self.fields['event'].required = False

def clean(self):
    type = self.request.POST['type']
    if type == 'BOOK':
        self.fields['event'].required = False
    if type == 'CONF':
        self.fields['event'].required = True

1 个答案:

答案 0 :(得分:1)

我将在模板中使用jQuery通过以下几行之一来处理此问题。

$('#Your_Input').removeAttr('required');
$('#Your_Button').removeAttr("disabled")

希望有帮助。