这是我的群组邮件模型,该模型扩展了另一个模型Message
,其中包含其他字段text
,time
等。
class GroupMessage(Message):
group = models.ForeignKey(Group, related_name='+')
以下是我为此模型创建的表单。
class GroupForm(ModelForm):
class Meta:
model = GroupMessage
如何更改表单中组字段的帮助文本?任何帮助将不胜感激。
答案 0 :(得分:50)
对于 Django> = 1.6 (docs):
class GroupForm(ModelForm):
class Meta:
model = GroupMessage
help_texts = {
'group': 'Group to which this message belongs to',
}
答案 1 :(得分:15)
我使用了以下代码。
class _GroupMessageForm(ModelForm):
class Meta:
model = GroupMessage
class GroupMessageForm(_GroupMessageForm):
def __init__(self, *args, **kwargs):
super(_GroupMessageForm, self).__init__(*args, **kwargs)
self.fields['employees'].help_text = '<br/>Hold down "Control" to select more.'
答案 2 :(得分:0)
有多种方法可以实现。
1)您可以在模型的字段定义中添加help_text,如Bobort在上面的评论中所述:
class GroupMessage(Message):
group = models.ForeignKey(Group, related_name='+', help_text='Some text')
如果您希望此help_text保持不变,则无论您使用哪种ModelForm,此方法都非常有用。例如,您可以为GroupMessage模型创建两个ModelForm表单,它们都将具有该模型的help_text。
2)您可以像这样在表单字段中覆盖模型字段:
class GroupForm(ModelForm):
group = forms.ModelChoseField(label='Group', help_text='Some text')
class Meta:
model = GroupMessage
当您不仅需要更改help_text时,例如需要更改标签或查询集或字段类型时,这种方法很有用。
3)您可以按照上面的laffuste进行操作:
class GroupForm(ModelForm):
class Meta:
model = GroupMessage
help_texts = {
'group': 'Group to which this message belongs to',
}
如果您只想更改一个或多个字段的help_text,则此方法很有用。
4)另一种方法是像您所做的那样:
class GroupForm(ModelForm):
class Meta:
model = GroupMessage
def __init__(self, *args, **kwargs):
super(GroupForm, self).__init__(*args, **kwargs)
self.fields['employees'].help_text = 'Some text'
但是,此解决方案需要一些澄清。如果您将在这样的模板中使用此表单:
{% for field in form %}
{{ field }}
{{ field.help_text }}
{% endfor %}
很好。但是例如:
{% for field in form.visible_fields %}
{{ field }}
{{ field.help_text }}
{% endfor %}
help_text将为空,因为BoundField中的help_text在您自行设置之前已被填充。因此,解决方案是将self['employees'].help_text = 'Some text'
添加到__init__
或在模板中使用{{ field.field.help_text }}
。
在需要通过某些条件设置help_text的情况下(例如,是否将特定参数传递给表单初始化或其他方法),此解决方案很有用。
希望它将对某人有所帮助。