How to Deselect an Already Selected ForeignKey Object in Django FormWizard?

I have a Django project where I use FormWizard for managing multi-step forms. In one of my forms, I have a ModelChoiceField linked to a ForeignKey field in the model. Here's a simplified version of the form:

class JobDetailsForm2(BaseHXForm):
    employee_id = forms.CharField(
        label='Employee ID',
        max_length=50,
        widget=forms.TextInput(attrs={
            'class': 'form-control',
            'hx-trigger': 'change',
            'readonly': 'readonly',
        })
    )

    department = forms.ModelChoiceField(
        queryset=Department.objects.all(),
        label='Department',
        required=False,
        widget=forms.Select(attrs={
            'class': 'form-control department',
            'hx-trigger': 'change',
        })
    )

I want to allow users to deselect the already selected ForeignKey object (i.e., set department to None). However:

  1. I use FormWizard, so I don't want to make changes in the views.
  2. I don’t have access to the HTML templates to customize the dropdown directly. How can I handle this within the form itself to allow users to deselect the ForeignKey? Is there a way to ensure the form allows this functionality without modifying the views or templates?

I’ve ensured the ModelChoiceField is optional by setting required=False, which should allow a None value. However, I’m not sure how to handle this in the form logic without requiring changes in the views or templates.

I expected the dropdown in the form to allow an empty selection (---), and upon submitting the form, the ForeignKey field would be cleared (set to None) if no department was selected.

I haven’t been able to confirm this behavior entirely since I don’t have control over the templates or view logic.

Back to Top