【问题标题】:Custom Label in Django FormsetDjango Formset 中的自定义标签
【发布时间】:2011-08-22 10:13:15
【问题描述】:

如何将自定义标签添加到我的表单集?

<form method="post" action="">

    {{ formset.management_form }}
    {% for form in formset %}
        {% for field in form %}
            {{ field.label_tag }}: {{ field }}
        {% endfor %}
    {% endfor %}
</form>

我的模型是:

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

现在在模板中而不是字段标签为'song',我如何设置它以使其显示为'What song are you going to sing?'

【问题讨论】:

  • “自定义标签”是什么意思?他们应该怎么看?它们应该显示在哪里?那个模板提取有什么意义?
  • 抱歉不清楚。查看编辑?

标签: django django-templates django-forms formset


【解决方案1】:

您可以在表单中使用label 参数:

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

如果您使用的是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

更新:

@Daniel Roseman 的评论

或者在模型中(使用verbose_name):

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

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

【讨论】:

  • 我收到TypeError: __init__() got an unexpected keyword argument 'label'
  • label 应该是 verbose_name,或者只使用第一个位置参数。
  • 答案已更新。 label 参数仅用于 Form 字段而不是 Model 字段(我的错误)。您能否发布您的表单定义,以便我可以为您提供 100% 可行的解决方案?
  • 我使用的是 ModelForm class SingForm(ModelForm): Class Meta: model = Sing
  • 在模型字段中使用verbose_name 的解决方案应该可以解决问题。
猜你喜欢
  • 2020-02-18
  • 1970-01-01
  • 2011-05-05
  • 2012-07-07
  • 2010-10-10
  • 2011-07-11
  • 2015-01-20
  • 2011-03-03
  • 2011-09-16
相关资源
最近更新 更多