Динамическое поле выбора
Я работаю на Django 5.1.1. У меня есть форма IngredientFormSet для IngredientForm(forms.Form). В форме есть поле выбора, как показано в фрагменте ниже. Количество ингредиентов в IngredientModel составляет несколько тысяч. JS-библиотека select2 была использована в пользовательском интерфейсе, чтобы пользователь мог вводить текст в это поле, а select2 фильтровал названия с помощью Ajax-вызова.
Теперь, когда я отправляю форму, я получаю ошибку, что id названия ингредиента не является частью выбора (как choices=[]), что ожидаемо, но очевидно, что это не работает для моего случая.
Я хочу обновить IngredientForm.__init__(self, *args, **kwargs) таким образом, чтобы при любом идентификаторе ингредиента, который я получу в kwargs, я запрашивал, существует ли ингредиент с таким идентификатором в таблице, и если да, то добавлял это единственное значение в choices.
class IngredientForm(forms.Form):
ingredient = forms.ChoiceField(
label='Ingredient name',
required=True,
choices=[],
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
form_ingredient_id = ? # how to get hold of value of option here?
if IngredientModel.objects.filter(id=form_ingredient_id).exists():
self.fields['ingredient'].choices = [(form_ingredient_id, form_ingredient_id)]
Итак, как мне получить ingredient_id, который select2 поместил в поле выбора формы? Обратите внимание, что при инициализации набора форм я использую пользовательский префикс.