3
Django에서 몇 가지 필수 입력란이있는 세부 양식을 만들었습니다. 해당 입력란에 필수 입력란이 설정되지 않은 경우 예외없이 초안 옵션으로 페이지를 저장하고 싶습니다. 내가 어떻게 해?초안으로 페이지를 저장하는 방법
Django에서 몇 가지 필수 입력란이있는 세부 양식을 만들었습니다. 해당 입력란에 필수 입력란이 설정되지 않은 경우 예외없이 초안 옵션으로 페이지를 저장하고 싶습니다. 내가 어떻게 해?초안으로 페이지를 저장하는 방법
초안으로 저장하는 경우 설정할 필요가없는 입력란에는 첫 번째 필수 = 거짓이 설정됩니다. 그런 다음 양식에 'save_as_draft'와 같은 필드를 추가하십시오. 이는 부울입니다. 이제 save_as_draft 필드의 상태 (사용자가이 필드를 선택했는지 여부)에 따라이 필드의 유효성을 검사하는 메소드가 필요합니다.
def is_provided(self, field):
value = self.cleaned_data.get(field, None)
if value == None or value == '':
self._errors[field] = ErrorList([u'This field is required.'])
if field in self.cleaned_data:
del self.cleaned_data[field]
이 양식에이 방법을 추가하고 필드의 유효성을 검사하는 형태의 청소 방법을 사용 : 당신은 같은 방법을 사용할 수 있습니다. 이것은 다음과 같을 것이다 : 확인란 대신 save_as_draft 버튼을 선호
def clean(self):
draft = self.cleaned_data.get('save_as_draft', False)
if not draft:
# User doesn't save a draft so we need to check if required fields are provided
req_fields = ['field1', 'field2', 'field3']
for f in req_field:
self.is_provided(f)
return self.cleaned_data
사용자의 경우에, 당신이보기를 수정하고 사용자가 save_as_draft 버튼을 클릭하거나 버튼을 저장 여부에 따라 양식의 생성자에 어떤 매개 변수를 전달해야합니다. Form 생성자에서이 상태를 self.save_as_draft로 저장하고 Form.clean 메서드에서 이것을 사용하여 초안을 저장하고 있는지 확인합니다.
인사말, 루카스
이 방법을 사용하면 좋지 않다하는 null 모든 모델 필드를 확인해야합니다 –