Jak ustawić początkowe wartości dla ModelForm, gdy podano także instancję
Wygląda na to, że jeśli modelForm otrzyma instancję, ignoruje wszystkie podane wartościinitial
i zamiast tego ustawia ją na wartość instancji - nawet jeśli ta instancja jest pustym rekordem modelu.
Czy istnieje sposób na utworzenie formularza za pomocą instancjii czy ustawił początkowe dane?
Potrzebuję go, ponieważ zapisuję powiązane rekordy i nie wydają się poprawnie zapisywać, chyba że ModelForm otrzyma instancję podczas tworzenia.
Jestem pewien, że odpowiedź na to pytanie jest prosta i po prostu brakuje mi czegoś oczywistego.
Oto odpowiedni kod:
w widoku:form = form_class(person=person, conference=conference, initial=initial, instance=registration)
gdzie jest form_classRegistrationForm
a następnie w formularzu rejestracyjnym:
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)
Następnie, gdy wywołam pole, powiązane pola są puste.