Skip to content Skip to sidebar Skip to footer

Conditionally Show And Hide A Form Field And Set The Field Value

I have a form in my Django that looks something like this: class PersonnelForm(forms.Form): ''' Form for creating a new personnel. ''' username = forms.RegexField(

Solution 1:

You could use the form's __init__ method to hide (or delete) the field, i.e.

classPersonnelForm(forms.Form):
    """
    Form for creating a new personnel.
    """
    username = forms.RegexField(
        required=True, max_length=30, label=_("Name")
    )
    is_manager = forms.BooleanField(
        required=True, label=_("Is Manager")
    )

    def__init__(self, *args, **kwargs):
        delete_some_field = kwargs.get('delete_some_field', False)
        if'delete_some_field'in kwargs:
            del kwargs['delete_some_field']
        super(PersonnelForm, self).__init__(*args, **kwargs)
        if delete_some_field:
            del self.fields['is_manager']
            # or
            self.fields['is_manager'].widget = something_else

#views.py
form = PersonnelForm(...., delete_some_field=True)

Solution 2:

If the functionalities are different, you can use inherit one form from the other and display sutiably(i.e exclude fields).

Also, Form's init method can be made to take arguments, and this can be used to initialize the form's field values.

Post a Comment for "Conditionally Show And Hide A Form Field And Set The Field Value"