당신이 통과해야 데이터가 얼마나 복잡 따라 몇 가지 방법이있다 생각합니다. https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/#providing-initial-data-for-the-forms 을하고 당신과 같이 urls.py에서보기에 전달할 초기 사전 생성 :
현재의 지침을 따를 수
>>> initial = {
... '0': {'subject': 'Hello', 'sender': '[email protected]'},
... '1': {'message': 'Hi there!'}
... }
>>> wiz = ContactWizard.as_view([ContactForm1, ContactForm2], initial_dict=initial)
귀하의 다른 옵션을,이 더 복잡하지만 것입니다 좀 더 많은 로직을 가질 수있게하려면 get_initkwargs를 오버라이드하고 거기에 로직을 넣어야합니다 (장고 코드 : https://github.com/django/django/blob/master/django/contrib/formtools/wizard/views.py 참조).
마지막으로 get_initkwargs가 클래스 메소드이고 마법사가 시작될 때 초기 사전을 전달해야하므로 이전 양식의 입력을 기반으로 개체를 제공해야하는 경우 매우 복잡해집니다. 그러나, 당신은 무시 get_form_kwargs에 의해 그것을 할 아마 수 있습니다
def get_form_kwargs(self, step=None):
kwargs = {}
if step != '0':
your_field = self.get_cleaned_data_for_step('0')['your_field']
# logic for getting object based on field goes here
kwargs.update({'object': object,})
return kwargs
그런 다음 당신은 당신이 kwargs로 전달 된 개체를 기반으로 초기 값을 설정하는 형태의 초기화 방법을 사용할 수 있습니다. 마지막 코드를 많이 사용하지만 이전 코드는 실제로 사용하지 않았습니다.
확실 하시겠습니까? 나는 이미 그것을 시도하고 그것은 실패합니다. " 'EditingForm'개체를 호출 할 수 없습니다."라는 오류 메시지가 나타납니다. – espenhogbakk
어 나쁜 내 참으로 거기에 인스턴스를 던져 수 없습니다/내 대답을 –
formWizards에는 status_code가 없기 때문에 미들웨어가 "return FormWizard"것을 좋아하지 않는다고 생각하고 어떤 시점에서 status_code에 대한 검사가 있습니다. == 400. 이걸 시도하면 오류가 발생합니다. – hendrixski