'Given a dictionary-like structure is provided, a fresh related
resource is created using that data.'

def resource_from_data(self, fk_resource, data, request=None, related_obj=None, related_name=None):

    data = dict_strip_unicode_keys(data)
    obj = None
    if (getattr(fk_resource._meta, u'include_resource_uri', True) and (u'resource_uri' in data)):
        uri = data[u'resource_uri']
        err_msg = (u"Could    not    find    the    provided    %s    object    via    resource    URI    '%s'." % (fk_resource._meta.resource_name, uri))
        try:
            obj = fk_resource.get_via_uri(uri, request=request)
        except ObjectDoesNotExist:
            raise ApiFieldError(err_msg)
    fk_bundle = fk_resource.build_bundle(data=data, obj=obj, request=request)
    if related_obj:
        fk_bundle.related_obj = related_obj
        fk_bundle.related_name = related_name
    unique_keys = {k: v for (k, v) in data.items() if ((k == u'pk') or (hasattr(fk_resource, k) and getattr(fk_resource, k).unique))}
    if ((not obj) and unique_keys):
        try:
            fk_resource.obj_get(fk_bundle, **data)
        except (ObjectDoesNotExist, NotFound, TypeError):
            try:
                fk_resource.obj_get(fk_bundle, **unique_keys)
            except (ObjectDoesNotExist, NotFound):
                pass
        except MultipleObjectsReturned:
            pass
    fk_bundle = fk_resource.full_hydrate(fk_bundle)
    fk_resource.is_valid(fk_bundle)
    return fk_bundle
