Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为RadioSelect中的每个选项设置帮助\u文本_Python_Django - Fatal编程技术网

Python 为RadioSelect中的每个选项设置帮助\u文本

Python 为RadioSelect中的每个选项设置帮助\u文本,python,django,Python,Django,我可以在任何表单字段上设置help_text属性,但是否可以在RadioSelect()所用的选项上设置help_text 我想寻找一种干净的方式,在每个单选按钮下显示一些帮助信息 下面是模型和表单的代码,我可以在带有标签、输入元素和帮助文本的模板中呈现name属性。我还希望能够使用标签(“成员类型”)、单选按钮(“打开成员资格”和“关闭成员资格”)以及与每个单选元素关联的帮助文本(“任何人都可以加入此组”和“只有选定成员才能加入此组”)呈现成员资格类型属性 假设您使用的是RadioSelect

我可以在任何表单字段上设置help_text属性,但是否可以在RadioSelect()所用的选项上设置help_text

我想寻找一种干净的方式,在每个单选按钮下显示一些帮助信息

下面是模型和表单的代码,我可以在带有标签、输入元素和帮助文本的模板中呈现name属性。我还希望能够使用标签(“成员类型”)、单选按钮(“打开成员资格”和“关闭成员资格”)以及与每个单选元素关联的帮助文本(“任何人都可以加入此组”和“只有选定成员才能加入此组”)呈现成员资格类型属性


假设您使用的是
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)

这并不是严格地使用帮助文本,但在大多数情况下,它应该能够完成工作。

@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>
这可能发生在视图代码中。现在来看看表单中发生了什么

类订单(ModelForm):
定义初始化(self,*args,**kwargs):
self.tickets=kwargs.pop(“tickets”)
super(订单,self)。\uuuuuu初始化(*args,**kwargs)
选项=[(t.code,标记为安全(u'%s%s'(t.label,t.help)))
对于t-in-self.门票]
self.fields['ticket']=forms.ChoiceField(
选择=选择,
widget=forms.RadioSelect()
)

在您的示例中,您已经设置了一个id和label属性。我已经有了这两个属性,我希望添加第三个属性;帮助文本。如果你给我们看一些代码,我们可以提供更多帮助。现在,我不明白您试图实现的目标是什么,这是使用
id
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>
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.'))
)
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)
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()
        )