django에서 체크 박스를 선택 취소하면 코드가 동적으로 선택 취소되므로 일부 객체 삭제가 트리거됩니다. 내 개체를 삭제하면 안 됨으로 확인란이 비활성화되어 렌더링되고 제출되지 않습니다.Django : 체크 박스가 제출되었는지 여부를 감지합니다.
그러나보기에서 form.cleaned_data에 여전히 키 "is_user"가 포함되어 있으므로 false로 제출되는 확인란과 제출되지 않은 확인란을 구분할 수 없습니다.
forms.py
if somecondition:
self.fields["is_user"].widget.attrs['disabled'] = True
views.py
if "is_user" in form.cleaned_data:
if form.cleaned_data["is_user"] == False:
do dangerous deleting
return redirect(page)
elif form.cleaned_data["is_user"] == True:
process information
return redirect(page)
else:
return redirect(page)
나는 그것의 확인란이 비활성화 된 상태에서 양식을 제출하고, PDB 쉘에서 내가 입력 할 수 있습니다
(pdb) form.cleaned_data
{'is_user': False}
form.cleaned_data가 제출되지 않은 필드의 키를 포함하지 않을 것으로 예상했습니다. 선택하지 않은 채로 제출하지 않고 제출되지 않았는지 어떻게 확인할 수 있습니까?
첫 번째로, 코드의 의도가 맞습니다. 두 번째 모델에서 관련 개체가있는 것이 아니라 첫 번째 모델의 부울 필드 상태에 응답하도록 작업을 변경했습니다. 그 녀석에게 감사드립니다. 제출 된 데이터의 문제에서 양식의 정리 된 데이터에 키가 있지만 비활성화 된 확인란의 가치가 없다고 말하는 중입니까? – nimasmi
No :'cleaned_data'는 체크 박스의 키에 대해'False'를 포함합니다 (사용 안함인지 여부를 불문합니다). –