'Read-only representation of this subform.
@param value: the value as returned from extract()
@return: the read-only representation'

def represent(self, value):

    (component, link) = self.get_link()
    rkey = link.table[component.rkey]
    represent = rkey.represent
    if (not hasattr(represent, 'bulk')):
        lookup_field = None
        for fname in ('name', 'tag'):
            if (fname in component.fields):
                lookup_field = fname
                break
        represent = S3Represent(lookup=component.tablename, field=lookup_field)
    if isinstance(value, (list, tuple, set)):
        result = represent.bulk(list(value))
        if (None not in value):
            result.pop(None, None)
    else:
        result = represent.bulk([value])
    labels = result.values()
    labels.sort()
    if self.options.get('render_list'):
        if ((value is None) or (value == [None])):
            return current.messages.NONE
        else:
            return UL([LI(l) for l in labels], _class='s3-inline-link')
    else:
        return TAG[''](list(chain.from_iterable([[l, ',    '] for l in labels]))[:(-1)])
