型号:
class MyModel(models.Model):
watermark_image = models.ImageField(null=True, blank=True, default=settings.WATERMARK_DEFAULT)
当我尝试在管理员中单击其复选框时清空该字段时,除非我从模型中删除默认属性,否则不会删除文件!为什么呢?
答案 0 :(得分:1)
模型字段中的默认属性具有以下目的:
如果对象没有watermark_image属性,请使用默认图像。
为什么这很重要?
想象一下,如果你有一个不能为空的字段,否则会导致数据库不一致。
例如,如果您的用户模型具有profile_picture字段。
循环遍历列表中的用户列表时,如下所示:
[user.profile_picture for user in User.objects.all()]
如果在profile_picture属性的模型级别上设置了默认值,则无需担心此代码。如果您没有该默认值,则此代码可能会为未设置profile_picture的用户引发AttributeError。
因此,无法删除在admin中设置了默认值的属性,因为它将消除model属性中default关键字参数的用途。