gpt4 book ai didi

django - 使用 RadioSelect 小部件自定义 Django 表单

转载 作者:行者123 更新时间:2023-12-04 11:11:40 25 4
gpt4 key购买 nike

所以我使用 jQuery UI 到 skin the radio buttons但我无法让 Django 以必须完成的方式呈现我的表单。

我需要有这样的结构:

<table>
<tr>
<td><label for="notify_new_friends">Notify when new friends join</label></td>
<td class="radio">
<input type="radio" name="notify_new_friends" id="notify_new_friends_immediately" value="1" checked="checked"/><label for="notify_new_friends_immediately">Immediately</label>
<input type="radio" name="notify_new_friends" id="notify_new_friends_never" value="0"/><label for="notify_new_friends_never">Never</label>
</td>
</tr>
</table>

所以总而言之,我需要一个类( radio )中的单选按钮,它们有一个 input和一个 label for .

当我使用 {{ profile_form.notify_new_friends }} 在我的模板中呈现表单时我得到以下信息:
<ul>
<li><label for="id_notify_new_friends_0"><input type="radio" id="id_notify_new_friends_0" value="0" name="notify_new_friends" /> Immediately</label></li>
<li><label for="id_notify_new_friends_1"><input type="radio" id="id_notify_new_friends_1" value="1" name="notify_new_friends" /> Never</label></li>
</ul>

除了列表部分,这正是我想要的。所以我尝试循环它,这给了我不同格式的标签:
{% for item in profile_form.notify_new_friends %}
{{ item }}
{% endfor %}

这给了我:
<label><input type="radio" name="notify_new_friends" value="0" /> Immediately</label>
<label><input type="radio" name="notify_new_friends" value="1" /> Never</label>

所以这里的问题是它停止使用 label for并开始仅使用 label把它全部包裹起来。

我也试过做这样的事情,但后来 labellabel_tag不要渲染任何东西。
{{ profile_form.notify_new_friends.0 }}
{{ profile_form.notify_new_friends.0.label_tag }}
{{ profile_form.notify_new_friends.0.label }}

那么有谁知道我如何正确渲染它!?

仅供引用,这是我的 forms.py:
self.fields['notify_new_friends'] = forms.ChoiceField(label='Notify when new friends join', widget=forms.RadioSelect, choices=NOTIFICATION_CHOICES)

最佳答案

在我的代码中,我发现从

forms.RadioSelect


forms.RadioSelect(attrs={'id': 'value'})

神奇地导致结果 tag值包括 id附加了项目索引的属性。如果你使用
{% for radio in form.foo %}
<li>
{{ radio }}
</li>
{% endfor %}

在表格中你会得到一个 label缠绕在 input .如果您想要更传统的 input其次是 label ,你需要这样做:
{% for radio in form.value %}
<li>
{{ radio.tag }}
<label for="value_{{ forloop.counter0 }}">{{ radio.choice_label }}</label>
</li>
{% endfor %}

关于django - 使用 RadioSelect 小部件自定义 Django 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11556143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com