Login

remove the annoying "Hold down control..." messages

Author:
arthur
Posted:
March 23, 2011
Language:
Python
Version:
1.2
Tags:
admin forms hack widget
Score:
0 (after 0 ratings)

This function mangles a generated form class to remove the Hold down "Control", or "Command"... messages from the help text. This is really a dirty hack awaiting a proper solution to Django ticket 9321.

This function can be useful for forms in the admin interface that use custom widgets. Basic usage:

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel

class MyAdmin(admin.ModelAdmin):
    form = remove_holddown(MyModelForm, ('field1', 'field2'))
1
2
3
4
5
6
7
8
9
def remove_holddown(form, fields):
    """This removes the unhelpful "Hold down the...." help texts for the
    specified fields for a form."""
    remove_message = unicode(_('Hold down "Control", or "Command" on a Mac, to select more than one.'))
    for field in fields:
        if field in form.base_fields:
            if form.base_fields[field].help_text:
                form.base_fields[field].help_text = form.base_fields[field].help_text.replace(remove_message, '').strip()
    return form

More like this

Comments

malinich (on March 27, 2013):
<p>**need in 8 line: </p> <p>form.base_fields[field].help_text = ugettext_lazy(form.base_fields[field].help_text.replace(remove_message,''))<br/> but anyway i don't can change in django this problem</p>

#

Tatsh (on July 31, 2016):
<p>This is not going to work as that is too early in the code to remove the help text. You need to override the method formfield_for_manytomany():</p> <pre>from django.contrib import admin from django.forms.widgets import CheckboxSelectMultiple, SelectMultiple class SomeModelAdmin(admin.modelAdmin): def formfield_for_manytomany(self, db_field, request=None, **kwargs): """Ridiculous override just to get rid of the "Hold down" text""" form_field = super(SomeModelAdmin, self).formfield_for_manytomany(db_field, **kwargs) if ((isinstance(form_field.widget, SelectMultiple) and not isinstance(form_field.widget, CheckboxSelectMultiple)) # and # isinstance(form_field.widget, BetterFilterWidget)): repl = unicode(_('Hold down "Control", or "Command" on a Mac, to select more than one.')) form_field.help_text = form_field.help_text.replace(repl, '').strip() return form_field </pre>

#

Please login first before commenting.