你如何动态隐藏Django中的表单字段?

Jas*_*sta 15 python django django-forms

我正在Django制作个人资料表格.有很多可选的额外配置文件字段,但我只想一次显示两个.如何隐藏或删除我不想动态显示的字段?

这是我到目前为止:

class UserProfileForm(forms.ModelForm):
    extra_fields = ('field1', 'field2', 'field3')
    extra_field_total = 2

    class Meta:
        model = UserProfile

    def __init__(self, *args, **kwargs):
        extra_field_count = 0
        for key, field in self.base_fields.iteritems():
            if key in self.extra_fields:
                if extra_field_count < self.extra_field_total:
                    extra_field_count += 1
                else:
                    # do something here to hide or remove field
        super(UserProfileForm, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

Jas*_*sta 19

我想我找到了答案.

首先我试过:

field.widget = field.hidden_widget
Run Code Online (Sandbox Code Playgroud)

这没用.

正确的方法恰好是:

field.widget = field.hidden_widget()
Run Code Online (Sandbox Code Playgroud)