1

Clear チェックボックスを使用してアップロードされた画像を削除し、Django Admin インターフェイスで [保存] をクリックすると、次の結果が得られます。

/admin/foo/bar/1/ の TypeError

Unicode への強制: 文字列またはバッファが必要です。ImageFieldFile が見つかりました

例外値: Unicode への強制: 文字列またはバッファーが必要、ImageFieldFile が見つかりました例外の場所: /home/ec2-user/ve/Project/lib/python2.6/site-packages/django/core/files/images.py in get_image_dimensions、 47行目

これはおそらく戻り値の unicode タイプに関係しているため、関連するコードで からreturn imageに変更しましたが、これで問題は解決していません。これはデバッグ ログです。return image.nameImageField

/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 メソッドは次のようにインポートされます: from django.core.files.images import get_image_dimensions

これは clean 関数の本体です。

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
4

1 に答える 1