我想作一個形式用這種網格:顯示Django的形式或者Django的Floppyforms網格無線電形式
你知不知道我該怎麼辦呢?有沒有一個Django窗體小部件?
實際上它是與網格中的無線電顯示相同的選擇列表的問題。
感謝,
Natim
我想作一個形式用這種網格:顯示Django的形式或者Django的Floppyforms網格無線電形式
你知不知道我該怎麼辦呢?有沒有一個Django窗體小部件?
實際上它是與網格中的無線電顯示相同的選擇列表的問題。
感謝,
Natim
我會做到這一點用在網格上每行一個字段Django的形式,具有ChoiceField和RadioSelect小窗口:
line1 = forms.ChoiceField(widget=forms.RadioSelect, choices=TRUC)
line2 = …
然後你需要找到模板佈局來正確渲染。 RadioSelect
生成<ul>
,其中eahc選項爲<li>
。選擇標籤包含在<li>
中,這不是您想要的。
使用軟盤可以繼承RadioSelect
並給它一個cutom template_name(查看floppyforms/radio.html
模板)以省略標籤。你也可以修改它來渲染表格單元格(<td>
s)而不是<li>
,並使表單標記生成一個表格標題中的標籤。
import floppyforms as forms
class RadioSelect(forms.RadioSelect):
template_name = 'myforms/radio.html'
把你想要的行標記放在上面的模板中。
然後,在模板中呈現你的表格:
<form method="post" action="youraction">
<table>
<thead>
<td> <!-- put your form headers here --> </td>
</thead>
<tbody>
{% for field in form %}
<tr>
<td>{{ field.label_tag }}</td>
{{ field }}
</tr>
{% endfor %}
</tbody>
</table>
<!-- submit button -->
</form>
然後它只是將一對夫婦的CSS樣式來得到你需要:)
你可以試試這個領域佈局的問題django-radiogrid
在這種情況下,我會毫不猶豫地使用純html,並且只需{%if form.data.email =='daily'%} checked = checked {%endif%} in radio input tags。 KISS一路。 – jpic 2012-01-04 13:49:37
所以你會製作一個包含標題(選項)和字段作爲參數的模板標籤? – Natim 2012-01-04 13:53:51
對於第一個網格,我會在表單模板中硬編碼。對於第二個網格:包含模板標籤聽起來像是個好主意(爲什麼不使用django-native-tags)。至於參數,有一點是肯定的:您需要選擇區域(構建行),但是您可以從字段(field.choices)推導出選擇(構建列)。所以看起來這樣的簽名可以工作{%my_inc_tag form'email,newsletter等...'%}。當然,包含函數將不得不準備包含模板所需的上下文。這不是直接的,但它是可能的。 – jpic 2012-01-04 14:06:01