Condicionalmente muestre y oculte un campo de formulario y establezca el valor del campo

Tengo un formulario en mi Django que se parece a esto:

class PersonnelForm(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") ) 

Yo uso este formulario en dos lugares en mi sitio. En uno de los lugares, me gustaría mostrar el formulario y todos sus campos, excepto el campo is_manager , pero me gustaría establecer el valor predeterminado de este campo en True . En el otro lugar, me gustaría mostrar el formulario y todos sus campos, incluido el campo is_manager , y me gustaría que tuviera un valor predeterminado de False.

¿Cómo puedo lograr esto? Parece ser una cosa trivial pero no puedo entenderlo.

Gracias.

Podría usar el método __init__ del __init__ para ocultar (o eliminar) el campo, es decir,

 class PersonnelForm(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) 

Si las funcionalidades son diferentes, puede utilizar heredar una forma de la otra y mostrar de forma sutil (es decir, excluir campos).

Además, se puede hacer que el método init del formulario tome argumentos, y esto se puede usar para inicializar los valores de campo del formulario.