################################################### # # Usage: # {% load help_text_as_placeholder %} # form.field|help_text_as_placeholder # OR # field|help_text_as_placeholder ################################################### from django import template from django.utils.safestring import mark_safe register = template.Library() IGNORE_FIELDS = ['<textarea', '<select'] @register.filter("help_text_as_placeholder") def help_text_as_placeholder(field): html = field.as_widget() return _get_field_with_placeholder(field, html) def _get_field_with_placeholder(field, html): for ignored_field in IGNORE_FIELDS: if (ignored_field not in html): html_parts = html.split("/>") placeholder = field.help_text or field.name.title() html_parts.append('placeholder="{}"'.format(placeholder)) html_parts.append(' />') else: return html return mark_safe(''.join(html_parts))