Как отменить выбор уже выбранного объекта 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). Однако:
- Я использую FormWizard, поэтому не хочу вносить изменения в представления.
- У меня нет доступа к HTML-шаблонам для прямой настройки выпадающего списка. Как я могу сделать это в самой форме, чтобы пользователи могли отменить выбор ForeignKey? Есть ли способ убедиться, что форма позволяет эту функциональность без изменения представлений или шаблонов?
Я убедился, что поле ModelChoiceField является необязательным, установив required=False, что должно позволить значение None. Однако я не уверен, как это сделать в логике формы, не требуя изменений в представлениях или шаблонах.
Я ожидал, что выпадающий список в форме будет позволять пустой выбор (---), а при отправке формы поле ForeignKey будет очищено (установлено в None), если ни один отдел не был выбран.
Я не смог полностью подтвердить это поведение, поскольку не контролирую шаблоны или логику представления.