Custom Label in Django Formset

13,215

You can use the label argument in your form:

class MySingForm(forms.Form):
    song = forms.CharField(label='What song are you going to sing?')
    ...

If you are using ModelForms:

class MySingForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MySingForm, self).__init__(*args, **kwargs)
        self.fields['song'].label = 'What song are you going to sing?'
  
    class Meta:
        model = Sing

Update:

(@Daniel Roseman's comment)

Or in the model (using verbose_name):

class Sing(models.Model):
    song = models.CharField(verbose_name='What song are you going to sing?',
                            max_length=50)
    ...

or

class Sing(models.Model):
    song = models.CharField('What song are you going to sing?', max_length=50)
    ...
Share:
13,215
Eva611
Author by

Eva611

Updated on July 02, 2022

Comments

  • Eva611
    Eva611 almost 2 years

    How do I add custom labels to my formset?

    <form method="post" action="">
    
        {{ formset.management_form }}
        {% for form in formset %}
            {% for field in form %}
                {{ field.label_tag }}: {{ field }}
            {% endfor %}
        {% endfor %}
    </form>
    

    My model is:

    class Sing(models.Model):
    song = models.CharField(max_length = 50)
    band = models.CharField(max_length = 50)
    

    Now in the template instead of the field label being 'song', how do i set it so that it shows up as 'What song are you going to sing?'?

  • Eva611
    Eva611 almost 13 years
    i get TypeError: __init__() got an unexpected keyword argument 'label'
  • Daniel Roseman
    Daniel Roseman almost 13 years
    label should be verbose_name, or just use the first positional argument.
  • manji
    manji almost 13 years
    Answer updated. label argument is used only with Form fields not Model fields (my mistake). Can you post your form definition so that I can give you a 100% working solution?
  • Eva611
    Eva611 almost 13 years
    I was using ModelForm class SingForm(ModelForm): Class Meta: model = Sing
  • manji
    manji almost 13 years
    The solution with verbose_name in model field should do the trick.