지금 당장 흥미로운 문제를 해결하려고합니다.Django ModelForm 유효성 검사
image
필드가있는 장고 모델은 필요하지 않지만 새 모델 인스턴스를 만들 때 기본값으로 설정됩니다.
class Product(models.Model):
image = models.ImageField(upload_to='/image/directory/', default='/default/image/path/', blank=True)
나는 또한 image
필드를 포함하는 모델을 기반으로 ModelForm를 가지고 있고, 그 일부 사용자 지정 유효성 검사를 가지고있다.
class ProductForm(forms.ModelForm):
class Meta:
model = Product
fields = ('image',)
def clean_image(self):
image = self.cleaned_data.get('image', False)
if image:
# validate image
return None
문제가 ModelForm
에 is_valid()
를 호출, 그 per the docs입니다 검증을 형성 할뿐만 아니라 모델 검증을 유발하므로 사용자가 이미지없이 모델 양식을 제출하면, 내 사용자 지정 양식 유효성 검사 코드는 기본 모델을 검증하기 위해 시도 이미지가 아니라 단지 아무 것도하지 않는 것입니다.
양식 자체에 image
필드의 값이 없으면 어떻게해야합니까?
'blank = True'는 데이터베이스 레벨의 유효성 검사이고,'null = True'는 모델 레벨의 유효성 검사이므로'null = True'도 추가해야합니다. – karthikr
@karthikr : 사실이 아닙니다. 'null은 순수하게 데이터베이스와 관련된 반면, blank는 검증과 관련이 있습니다. 필드에 blank = True가 있으면 양식 유효성 검사에서 빈 값을 입력 할 수 있습니다. 필드가 공백 = 거짓이면 필드가 필요합니다. '. [더 자세한 정보는 여기.] (https://docs.djangoproject.com/en/dev/ref/models/fields/#blanko) –
@karthikr 나는 그것을 다시 확인하고 싶을 것 같다. 문서에서'null은 순전히 데이터베이스와 관련된 반면, blank는 유효성 검사와 관련이 있습니다 .' https://docs.djangoproject.com/en/dev/ref/models/fields/#field-options –