Django crispy forms удаляет мои начальные значения из формы динамической модели
У меня есть модель для "страницы", которая имеет отношение "многие-ко-многим" через промежуточную модель с чем-то под названием "элементы". Я хочу сделать элементы редактируемыми из формы редактирования страницы. Поэтому я динамически генерирую ModelChoiceFields. Это работает хорошо (то есть все селекты имеют правильное начальное значение), пока я не применю render_crispy_form
к форме в шаблоне Jinja2. Это устанавливает первое значение из выпадающего списка для всех элементов select, кроме 3-го, где в качестве начального значения устанавливается четвертый элемент.
Определение формы выглядит следующим образом:
class CreatePageForm(ModelForm):
class Meta:
model = Page
fields = [
'name',
]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
instance = kwargs.get('instance')
elements = Element.objects.all()
if instance is not None:
for page2element in kwargs.get('instance').pageelements_set.all():
fieldname = f"element_{page2element.position}"
self.fields[fieldname] = ModelChoiceField(elements, initial=page2element.element)
self.helper = FormHelper()
self.helper.form_method = 'post'
self.helper.add_input(Submit('submit', 'Save'))