如果设置了默认值,则不会删除Django ImageField

时间:2017-05-05 08:08:10

标签: python django

型号:

class MyModel(models.Model):
    watermark_image = models.ImageField(null=True, blank=True, default=settings.WATERMARK_DEFAULT)

当我尝试在管理员中单击其复选框时清空该字段时,除非我从模型中删除默认属性,否则不会删除文件!为什么呢?

1 个答案:

答案 0 :(得分:1)

模型字段中的默认属性具有以下目的:
如果对象没有watermark_image属性,请使用默认图像。 为什么这很重要? 想象一下,如果你有一个不能为空的字段,否则会导致数据库不一致。

例如,如果您的用户模型具有profile_picture字段。

循环遍历列表中的用户列表时,如下所示:

[user.profile_picture for user in User.objects.all()]

如果在profile_picture属性的模型级别上设置了默认值,则无需担心此代码。如果您没有该默认值,则此代码可能会为未设置profile_picture的用户引发AttributeError。

因此,无法删除在admin中设置了默认值的属性,因为它将消除model属性中default关键字参数的用途。