現在、興味深い問題を解決しようとしています。
必須ではないフィールドを持つ 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
フォーム自体にフィールドの値がない限り、何もしないようにするにはどうすればよいですか?