잠재 고객에 대한 세부 정보 모음이있는 예상치가 있습니다. 이름, 주소 등의 것들. 쉬운 것들. 그런 다음 제품, 노동력 등에 대한 주요 추정치와 연결되는 몇 가지가 있습니다 (inlineformset
).기본 폼의 유효성을 검사하지 않을 때 inline_formsets 유효성 검사
- 실행 기본 폼 유효성을 검사하는 경우
mainForm.is_valid()
- 후 저장합니다
제가하는 데 문제는 22 내 생각이 나는이 방법으로 검증을 할 것이라고했다 캐치의 비트입니다 그와 '하위'형태로 이동 (
inlineformset
들) - 실행
my_inlineformset.is_valid()
my_inlineformset
의 유효성을 검사하면, 너무 저장 - 그리고 그것은mainForm
의 ID로mainForm
에 '첨부'.
다음은 catch입니다. 기본 폼의 유효성을 검사하지 않으면 저장되지 않습니다. 저장하지 않으면 inlineformset
에 '첨부'할 수 없습니다. 따라서 mainForm
이 유효하지 않고 오류를 수정하기 위해 양식으로 다시 돌아 왔을 때 inlineformset
은 비어있게됩니다. 따라서 사용자가 inlineformset
에서 많은 자료를 채우지 만 mainForm
을 나사로 고정하면 오류를 수정하기 위해 양식으로 다시 돌아올 때 inlineformset
의 모든 데이터가 사라집니다.
먼저이 양식을 inlineformset
에 저장하고 기본 양식의 유효성을 검사 한 후에 만 기본 양식에 첨부하여이 문제를 피하려고했습니다. 이 문제는 내가 inlineformset
의 무리를 절약 할 수 있다는 것입니다. 견적에 절대 첨부되지 않을 것입니다. 필자는 아무것도 붙어 있지 않은 레코드가 전체적으로 필요 없으며 본질적으로 데이터베이스에 불필요하게 떠 다닐 것입니다.
if main.is_valid():
tmp = main.save(commit=False)
if estID != 'new':
tmp.routeNum = est.routeNum
tmp.estMap = est.estMap
tmp.estSketch = est.estSketch
if estID == 'new':
tmp.proposalID = newEstID('R')
tmp.sysType = 'R'
if estID == 'new':
pform = pFormSet(request.POST, instance=tmp, prefix="product_form")
lform = lFormSet(request.POST, instance=tmp, prefix="labour_form")
oform = oFormSet(request.POST, instance=tmp, prefix="other_form")
else:
pform = pFormSet(request.POST, instance=est, prefix="product_form")
lform = lFormSet(request.POST, instance=est, prefix="labour_form")
oform = oFormSet(request.POST, instance=est, prefix="other_form")
if pform.is_valid():
pform.save()
그래서 당신이 주요 유효성을 검사하지 않는 경우, 다음 내 FormSet
의이 (확인을 위해 확인되지 않습니다 것을 알 수 있습니다 다음은 pform
전에 시작이라는 것을 오류가 발생합니다 :
여기 내보기 코드입니다). 그렇지만 주전산기 전에 pform
의 유효성을 검사 할 경우 main
자체가 유효성을 검사하지 않으므로 저장하지 않으면 pform
을 main
에 어떻게 첨부합니까?
그렇다면 인라인 formset 데이터를 처리하는 방법과 같은 페이지의 다른 양식이 유효성을 검사하지 않으면 어떻게됩니까?
편집 난 그냥이 페이지를 분할에 대해 궁금하네요
(4 개 형태이있는 - 기본 폼과 3 개 인라인 형태) 4 단계에 있습니다. 사용자는 각 양식을 별도로 작성해야합니다. 그런 식으로 내가 위에서 언급 한 문제에 대해 걱정없이 안전하게 검증 할 수 있습니다. 물론 이것은 사용자가 필요한 것보다 더 많은 작업을 수행하는 것처럼 보입니다.
예, 당신은 그것을 찍었습니다. 어떤 이유로 든 메인 폼을 먼저 저장 한 다음 폼 세트를 확인/저장해야한다는 것을 내 마음 속에 생각했습니다. 방금 언급 한대로했는데 제대로 작동한다고 생각하지 않습니다. 유효성을 검사하지 않는 기본 양식은 하위 양식에 영향을 미치지 않으며 기본 양식 (또는 기본 양식)이 저장되지 않은 경우에도 모든 데이터를 보관합니다. – Garfonzo