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 –