def METHOD_NAME(self, name, value, attrs=None, renderer=None):
    attrs = dict(self.attrs, **attrs)
    options = attrs.get('options', {})
    attrs["options"] = ''
    params = cloudinary.utils.build_upload_params(**options)
    if options.get("unsigned"):
        params = cloudinary.utils.cleanup_params(params)
    else:
        params = cloudinary.utils.sign_request(params, options)
    if 'resource_type' not in options:
        options['resource_type'] = 'auto'
    cloudinary_upload_url = cloudinary.utils.cloudinary_api_url("upload", **options)
    attrs["data-url"] = cloudinary_upload_url
    attrs["data-form-data"] = json.dumps(params)
    attrs["data-cloudinary-field"] = name
    chunk_size = options.get("chunk_size", None)
    if chunk_size:
        attrs["data-max-chunk-size"] = chunk_size
    attrs["class"] = " ".join(["cloudinary-fileupload", attrs.get("class", "")])
    widget = super(CloudinaryInput, self).METHOD_NAME("file", None, attrs=attrs)
    if value:
        if isinstance(value, CloudinaryResource):
            value_string = value.get_presigned()
        else:
            value_string = value
        widget += forms.HiddenInput().METHOD_NAME(name, value_string)
    return widget