6
試圖立即解決一個有趣的問題。Django ModelForm驗證
我有一個不需要的image
字段的Django模型,但在創建新模型實例時設置爲默認值。
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
的問題是,per the docs,在ModelForm
調用is_valid()
觸發除了模型驗證,形成驗證,所以當用戶提交雛型沒有圖像,我的自定義表單驗證代碼試圖驗證默認模型形象,而不是像它應該做的那樣不做任何事情。
除非表單本身具有image
字段的值,否則我怎樣才能讓它不做任何事情?
'blank = True'是數據庫級別的驗證,'null = True'是模型級別的驗證,因此您還需要添加'null = True'。 – karthikr
@karthikr:這不是事實。 null與數據庫相關,而空白與驗證相關。如果一個字段的值爲空,則表單驗證將允許輸入一個空值。如果一個字段有空白= False,該字段將是必需的。 [更多信息](https://docs.djangoproject.com/en/dev/ref/models/fields/#blanko) –
@karthikr我想你可能想仔細檢查一下。從文檔'null是純數據庫相關的,而空白是與驗證相關的。「https://docs.djangoproject.com/en/dev/ref/models/fields/#field-options –