Django Formset 中的自定义标签
Posted
技术标签:
【中文标题】Django Formset 中的自定义标签【英文标题】:Custom Label in Django 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?'
?
【问题讨论】:
“自定义标签”是什么意思?他们应该怎么看?它们应该显示在哪里?那个模板提取有什么意义? 抱歉不清楚。查看编辑? 【参考方案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
的解决方案应该可以解决问题。以上是关于Django Formset 中的自定义标签的主要内容,如果未能解决你的问题,请参考以下文章