当使用清除复选框删除上传的图片,然后点击保存在Django管理界面时,得到如下结果:Django的Unicode的错误从管理界面删除的ImageField时
类型错误在/管理/富/酒吧/ 1/
胁迫到Unicode:需要字符串或缓冲区,ImageFieldFile发现
异常值:强迫为Unicode:需要字符串或缓冲区,ImageFieldFile发现 异常位置:/首页/ EC2用户/ VE /项目/ lib目录/ python2.6的/站点包/ Django的/ CO再在get_image_dimensions /文件/ images.py 47行
我知道,这可能是与unicode的类型返回,以便从return image
在相关ImageField
代码变更为return image.name
做但这并没有解决了这个问题。这是调试日志:
/home/user/ve/Project/lib/python2.6/site-packages/django/db/transaction.py
in inner
return func(*args, **kwargs) ...
/home/user/ve/Project/lib/python2.6/site-packages/django/contrib/admin/options.py
in change_view
if form.is_valid(): ...
/home/user/ve/Project/lib/python2.6/site-packages/django/forms/forms.py
in is_valid
return self.is_bound and not bool(self.errors) ...
/home/user/ve/Project/lib/python2.6/site-packages/django/forms/forms.py
in _get_errors
self.full_clean() ...
/home/user/ve/Project/lib/python2.6/site-packages/django/forms/forms.py
in full_clean
self._clean_fields() ...
/home/user/ve/Project/lib/python2.6/site-packages/django/forms/forms.py
in _clean_fields
value = field.clean(value, initial) ...
/home/user/Devel/Project/project-cms/project/forms.py in clean
w, h = get_image_dimensions(image) ...
/home/user/ve/Project/lib/python2.6/site-packages/django/core/files/images.py
in get_image_dimensions
file = open(file_or_path, 'rb') ...
的get_image_dimensions方法导入为这样: 从django.core.files.images导入get_image_dimensions
这是干净的函数体:
def clean(self, value, initial=None):
image = super(TheImageField, self).clean(value, initial)
if image is None: return
w, h = get_image_dimensions(image)
if w != TheImageField.required_width or h != TheImageField.required_height:
error_message = self.error_messages['incorrect_size'] % (w,h,)
raise util.ValidationError(error_message)
return image
向我们展示'get_image_dimensions'函数 – lalo