Мне нужно динамически установить выбор для поля ModelForm во время запроса. В конструктор ModelForm я добавляю варианты:
class ScanSetPlotForm(ModelForm):
class Meta:
model = models.ScanSetPlot
fields = ['scan_set_def_name', 'label_x_name', 'label_y_name']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['scan_set_def_name'].choices = scan_set_module.get_form_scan_set_def_list()
self.fields['label_x_name'].choices = scan_label.get_form_scan_labels_list()
self.fields['label_y_name'].choices = scan_label.get_form_scan_labels_list()
Это работает для самой записи формы - пользовательские опции отображаются в списках.
Однако при создании модели из проведенных данных:
form = forms.ScanSetPlotForm(request.POST)
Я получаю ошибку «Выберите правильный выбор» для всех полей, потому что ошибки выполняются в super (). init , прежде чем я смог добавить варианты.
Любая помощь будет высоко ценится, спасибо.