Похоже, что если ModelForm получает экземпляр, он игнорирует любые значения, которые вы предоставляете для initial
, и вместо этого устанавливает его в значение экземпляра, даже если этот экземпляр является пустой записью модели.
Есть ли способ создать форму с экземпляром и задать начальные данные?
Мне это нужно, потому что я сохраняю связанные записи, и они не сохраняются правильно, если ModelForm не получает экземпляр при создании.
Я уверен, что ответ на этот вопрос прост, и я просто упускаю что-то очевидное.
Вот соответствующий код:
в представлении:
form = form_class(person=person, conference=conference, initial=initial, instance=registration)
где form_class равен RegistrationForm
и далее в регистрационной форме:
class RegisterForm(forms.ModelForm):
... fields here ...
def __init__(self, *args, **kwargs):
... other code ...
self.person = kwargs.pop('person')
super(RegisterForm, self).__init__(*args, **kwargs)
for key, in self.fields.keys():
if hasattr(self.person, key):
self.fields[k].initial = getattr(self.person, key)
Затем, когда я вызываю поле, связанные поля пусты.