我可以在任何表单字段上设置help_text属性,但是可以在用于RadioSelect()的选项上设置help_text吗?
我正在寻找一种干净的方式来显示每个单选按钮下的一些帮助信息.
下面是模型和表单的代码,我可以使用标签,输入元素和帮助文本在模板中呈现name属性.我还希望能够使用标签("会员类型"),单选按钮("开放会员"和"封闭会员")以及与每个无线电元素相关联的帮助文本呈现membership_type属性('任何人都可以加入此group'和'只有select的成员可以加入这个组').
class Group(models.Model):
MEMBERSHIP_CHOICES = (
('O', 'Open membership'),
('C', 'Closed membership'),
)
name = models.CharField(max_length=255)
membership_type = models.CharField(max_length=1, choices=MEMBERSHIP_CHOICES, default="O")
class GroupForm(forms.ModelForm):
name = forms.CharField(label="Group name", help_text="Enter a name for your new group")
class Meta:
model = Group
widgets = { "membership_type": forms.RadioSelect }
Run Code Online (Sandbox Code Playgroud)
@Rishabh是正确的,但我会进一步详细说明,乍一看,它似乎不是解决方案,尽管它是; 或者,至少,它可以被克服以获得有用的效果,而不必深入django形式.
元组的第二个元素显示在"label"标签内 - 因此任何"内联元素"都是允许的; 例如:
或类似的东西
<ul>
<li><label for="id_ticket_0">
<input type="radio" id="id_ticket_0" value="PARTTIME" name="ticket">
<em>Part Time</em> Valid on Friday Night and Saturday Only
</label></li>
<li><label for="id_ticket_1">
<input type="radio" id="id_ticket_1" value="DAYTIME" name="ticket">
<em>Casual</em> Valid on Saturday Only
</label></li>
<li><label for="id_ticket_2">
<input type="radio" id="id_ticket_2" value="EARLYBIRD" name="ticket">
<em>Early Bird</em> Valid on Friday, Saturday, and Sunday. $15 discount for booking before 1am January 3rd, 2011
</label></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
诀窍是"mark_safe"描述的内容然后填写你需要的东西:
from django.utils.safestring import mark_safe
choices = (
('1', mark_safe(u'<em>One</em> | This is the first option. It is awesome')),
('2', mark_safe(u'<em>Two</em> | This is the second option. Good too.'))
)
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中我们:
数据结构:票证是我自己的类,它们具有以下属性:
但更多关于此的事情.首先让我们创建一些实例:
from mymodule import ticket
# so lets create a few
fulltime = ticket('FULLTIME',160,'Full Time',
"Valid Monday to Friday inclusive")
parttime = ticket('PARTTIME',110,'Full Time',
"Valid outside of business hours only")
daytime = ticket('DAYTIME',70,'Day Time',
"Valid only on weekends and public holidays")
# and put them together in a list any way you like
available_tickets = [fulltime, parttime, daytime]
# now create the form
OrderForm(tickets=available_tickets)
Run Code Online (Sandbox Code Playgroud)
这可能发生在您的视图代码中.现在看看表格中发生了什么
class OrderForm(ModelForm):
def __init__(self, *args, **kwargs):
self.tickets = kwargs.pop('tickets')
super(OrderForm, self).__init__(*args, **kwargs)
choices = [(t.code, mark_safe(u'<em>%s</em> %s' % (t.label, t.help)))
for t in self.tickets]
self.fields['ticket'] = forms.ChoiceField(
choices = choices,
widget = forms.RadioSelect()
)
Run Code Online (Sandbox Code Playgroud)
Ris*_*cha -1
假设您使用 的RadioSelect小部件forms.ChoiceField,您可以执行以下操作:
choices = (('1', 'First help_text here'),
('2', 'Second help_text here'),
('3', 'Third help_text here'),
)
class MyForm(forms.Form):
...
choice = forms.ChoiceField(widget = RadioSelect, choices = choices)
Run Code Online (Sandbox Code Playgroud)
这不是严格的使用help_text,但在大多数情况下它应该可以完成工作。
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |