Sud*_*hra 21 django django-forms
这是我的一组消息模型延伸另一个模型Message,其具有一些其它字段,如text,time等
class GroupMessage(Message):
group = models.ForeignKey(Group, related_name='+')
Run Code Online (Sandbox Code Playgroud)
以下是我为此模型创建的表单.
class GroupForm(ModelForm):
class Meta:
model = GroupMessage
Run Code Online (Sandbox Code Playgroud)
如何在表单中更改组字段的帮助文本?任何帮助,将不胜感激.
laf*_*ste 53
对于Django> = 1.6(docs):
class GroupForm(ModelForm):
class Meta:
model = GroupMessage
help_texts = {
'group': 'Group to which this message belongs to',
}
Run Code Online (Sandbox Code Playgroud)
Sud*_*hra 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.'
Run Code Online (Sandbox Code Playgroud)
有多种方法可以做到。
1)您可以将 help_text 添加到模型中的字段定义中,正如Bobort在上面的评论中所说:
class GroupMessage(Message):
group = models.ForeignKey(Group, related_name='+', help_text='Some text')
Run Code Online (Sandbox Code Playgroud)
如果您希望这个 help_text 保持不变,无论您使用什么 ModelForm,这种方式都很有用。例如,您可以为 GroupMessage 模型创建两个 ModelForm 表单,它们都将具有来自该模型的 help_text。
2)您可以像这样覆盖表单字段中的模型字段:
class GroupForm(ModelForm):
group = forms.ModelChoseField(label='Group', help_text='Some text')
class Meta:
model = GroupMessage
Run Code Online (Sandbox Code Playgroud)
当您不仅需要更改 help_text 还需要更改标签或查询集或字段类型时,这种方式很有用。
3)你可以像上面那样做:
class GroupForm(ModelForm):
class Meta:
model = GroupMessage
help_texts = {
'group': 'Group to which this message belongs to',
}
Run Code Online (Sandbox Code Playgroud)
如果您只想更改一个或多个字段的 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'
Run Code Online (Sandbox Code Playgroud)
但是这个解决方案需要小的澄清。如果您将在这样的模板中使用此表单:
{% for field in form %}
{{ field }}
{{ field.help_text }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
没关系。但例如在以下情况下:
{% for field in form.visible_fields %}
{{ field }}
{{ field.help_text }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
help_text 将是空的,因为在你自己设置之前,BoundField 中的 help_text 已被填充。所以解决方案是添加self['employees'].help_text = 'Some text'到模板中__init__或{{ field.field.help_text }}在模板中使用。
当您想通过某些条件设置 help_text 时,此解决方案很有用,例如,如果将特定参数传递给表单初始化或其他内容。
希望它会帮助某人。
| 归档时间: |
|
| 查看次数: |
20747 次 |
| 最近记录: |