我使用的版本是Django 4.2,有一个模型里定义了ImageField
,以下面这个为例:
class Example(models.Model)
image = models.ImageField(
blank=True,
upload_to=my_image_path,
)
当我上传图片的时候,django返回了这样一个错误:Ensure this filename has at most 100 characters (it has 107)
。
在django文档中,我们可以发现:
FileField 实例在数据库中被创建为 varchar 列,默认最大长度为 100 个字符。与其他字段一样,你可以使用 max_length 参数改变最大长度。
并且要知道ImageField是FileField的子类:
继承 FileField 的所有属性和方法,但也验证上传的对象是有效的图像。
ImageField 实例在数据库中创建为 varchar 列,默认最大长度为 100 个字符。与其他字段一样,你可以使用 max_length 参数改变最大长度。
因此,想要解决这个问题,我们只需要像平常的CharField
一样,在ImageField
的选项中加入max_length
:
class Example(models.Model)
image = models.ImageField(
blank=True,
upload_to=my_image_path,
max_length=500
)
改完之后,不要忘了更新数据库,做数据迁移:
python manage.py makemigrations
python manage.py migrate
原文地址:Django上传图片时ImageField的max_length报错
更多各领域的原创文章,欢迎参观:弦圈- 找到属于你的圈子,让知识无荒原
关注公众号,定期更新原创趣味内容