现在正在尝试解决一个有趣的问题。
我有一个 Django 模型,其image
字段不是必需的,但在创建新模型实例时设置为默认值。
class Product(models.Model):
image = models.ImageField(upload_to='/image/directory/', default='/default/image/path/', blank=True)
我还有一个基于该模型的 ModelForm,其中包括该image
字段,并且具有一些自定义验证。
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
问题是,根据文档is_valid()
,除了表单验证之外,调用ModelForm
触发器模型验证,因此当用户提交没有图像的模型表单时,我的自定义表单验证代码会尝试验证默认模型图像,而不是什么都不做正如它应该的那样。
除非表单本身具有该字段的值,否则我如何让它不做任何事情image
?