Django의 양식을 사용하여 API PATCH 요청의 유효성을 검사하고 있습니다. "보기"(보기에서 직접보기가 아니기 때문에 따옴표로 사용하지만, 이것은 불안정한 Resource
이지만 여기서는 관련이 없어야 함)이 패치 요청을 처리하는 self.data
에는 License
개체의 변경하려는 객체의 인스턴스와 ModelForm
을 인스턴스화하려고합니다. 분명히, 그러나, 나는 이것이 어떻게 작동하는지 오해하고 있습니다. 아래를 참조하십시오 : 나는 위의 함수에 데이터와 같은 몇 가지 필드를 전달하면, form.errors
가 ModelForm
작품에 인스턴스를 설정 어떻게 명확하게 이해하고 있지 않다 의미하는 License
모델에 대한 다른 모든 필수 필드를 뿌려Django ModelForm 'instance'매개 변수가 예상대로 작동하지 않습니다.
def handle_patch(self, pk):
license = License.objects.get(id=pk)
form = LicenseResourceForm(self.data, instance=license)
if not form.is_valid():
print(form.errors)
.
은 내가 clean()
방법에 장고의 ModelForm
코드 자체에 몇 디버그 인쇄를 추가하고 청소를 수행하기 시작, 나는 self.instance
나를 혼란 나는 기대 License
의 인스턴스로 채워집니다 것을 볼 수 있습니다 - ModelForm
객체는 인스턴스를 알고 있지만 말하기 위해 "빈 칸 채우기"를 사용하지는 않습니다.
그래서 나는 오해가 무엇입니까? 나는 틀린 일을해야만한다.
편집 나는 그래서 여기, 당신의 일부는 LicenseResourceForm
자체를 표시 할 수 있음을 깨닫게 내 디버그 출력을 포함한다 :
class LicenseResourceForm(ModelForm):
"""Form for License Resource create and change endpoints."""
class Meta(object):
model = License
fields = ['customer', 'service', 'enabled', 'not_valid_before', 'not_valid_after']
def clean(self):
try:
print(self.instance)
super().clean()
except Exception as e:
print(e)
HTML 양식의 컨텍스트에서 생각하면 부분 양식을 보내지 않을 것이라는 점이 합리적입니다. 필드의 동적 설정에 대한 좋은 아이디어. 나는 그걸 가지고 놀 것이다. 고맙습니다! – fildred13