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