Как отменить выбор уже выбранного объекта ForeignKey в Django FormWizard?

У меня есть проект Django, в котором я использую FormWizard для управления многоступенчатыми формами. В одной из форм у меня есть поле ModelChoiceField, связанное с полем ForeignKey в модели. Вот упрощенная версия формы:

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',
        })
    )

Я хочу позволить пользователям отменить выбор уже выбранного объекта ForeignKey (т.е. установить для отдела значение None). Однако:

  1. Я использую FormWizard, поэтому не хочу вносить изменения в представления.
  2. У меня нет доступа к HTML-шаблонам для прямой настройки выпадающего списка. Как я могу сделать это в самой форме, чтобы пользователи могли отменить выбор ForeignKey? Есть ли способ убедиться, что форма позволяет эту функциональность без изменения представлений или шаблонов?

Я убедился, что поле ModelChoiceField является необязательным, установив required=False, что должно позволить значение None. Однако я не уверен, как это сделать в логике формы, не требуя изменений в представлениях или шаблонах.

Я ожидал, что выпадающий список в форме будет позволять пустой выбор (---), а при отправке формы поле ForeignKey будет очищено (установлено в None), если ни один отдел не был выбран.

Я не смог полностью подтвердить это поведение, поскольку не контролирую шаблоны или логику представления.

Вернуться на верх