@register.filter def fixedwidth(value, arg): """ Truncates or pads a string to be a certain length Argument: Desired length of string """ try: length = int(arg) except ValueError: # invalid literal for int() return value # Fail silently if not isinstance(value, basestring): value = str(value) if len(value) > (length): truncated = value[:length - 3] if not truncated.endswith('...'): truncated += '...' return truncated if len(value) <= length: padded = value spaces_needed = (length - len(value)) + 1 for space_needed in range(1, spaces_needed): padded = "%s " % padded return padded return value