큰 Django 모델 (73 개 필드)이 ModelForm에 연결됩니다. Form Wizard 및 Form Preview contrib 응용 프로그램의 기능을 조합하여 사용하고 싶습니다.Django 폼 마법사 및 ModelForm으로 미리보기
즉, 양식 필드가 여러 페이지로 분할되어 사용자는 모델 인스턴스가 작성되기 전에 데이터를 검토/미리 볼 수 있습니다.
이 유형의 예제 또는 예제 코드에 대한 모범 사례가 있습니까?
큰 Django 모델 (73 개 필드)이 ModelForm에 연결됩니다. Form Wizard 및 Form Preview contrib 응용 프로그램의 기능을 조합하여 사용하고 싶습니다.Django 폼 마법사 및 ModelForm으로 미리보기
즉, 양식 필드가 여러 페이지로 분할되어 사용자는 모델 인스턴스가 작성되기 전에 데이터를 검토/미리 볼 수 있습니다.
이 유형의 예제 또는 예제 코드에 대한 모범 사례가 있습니까?
나는 첫 번째 장고 프로젝트에서 비슷한 일을한다. 세션 기반 FormWizard를 사용하여 사용자가 임의의 형식으로 데이터를 서브 바이 마이징하는 것을 중지 할 수 있도록 사용자 정의했습니다.
이 시점에서 FormPreview를 사용하여 정보를 표시하거나 양식을 동적으로 생성하여 사용자에게 보여줄 수 있습니다. 데이터는 세션에 남아 있습니다.
당신은 문맥에 전체 사전을 통과 한 다음 템플릿에 액세스 할 수 있습니다 : 그것은 대답하지만, 어쨌든 가치가 없어
# views.py
def get_context_data(self, **kwargs):
context = super(MyWizard, self).get_context_data(**kwargs)
context['all_data'] = self.get_all_cleaned_data()
return context
# template.html
{{ all_data }}
: 사소한 일 이상 아무것도 FormWizard를 사용하는 것이 문제가 될 수 있습니다 (에 적어도 그것은 나를위한 것이었다). 한 가지가 있습니다 - 초기 값 외에 명백한 방법으로 폼의'__init__'에 전달되는 것을 제어 할 수 없습니다. 그럼 어떻게 폼의'__init__'에 "인스턴스"키워드 인수를 제공할까요? 물론 거기에는 * 방법이 있습니다. 예를 들어, 필요한 클래스 인 ModelForm을 상속 받고'__init__ '를 재정의하여이를 해결했습니다. 그런 다음 해당 클래스를 .form_list의 요소에 지정해야합니다. 아주 명확하지 ... – shylent
... 그리고 FormWizard를 사용하려고한다면 그런 것들을 많이 다루어야합니다. 그 FormWizard가 나쁘다고 말하는 것은 아니지만 확실히, 사용하기 쉽지는 않습니다. 그리고 73 필드? 나도 알아,이 바보 들릴지 모르지만, 아마도, 작은 작업의 숫자로 그것을 분해하여 작업을 단순화하는 방법이 있습니까? 모델을 재구성하고 각 모델을 개별적으로 다루는 것과 마찬가지로? – shylent
의견을 보내 주셔서 감사합니다. 73 개의 필드가 단순화되었거나 단순화되지 않았다고 믿는다. 그것은 우리가 수집해야 할 많은 양의 데이터 일뿐입니다. :-) –