Saya akan melakukan ini dengan formulir Django dengan satu bidang per baris di grid Anda, dengan ChoiceField dan RadioSelect sebagai widget:
line1 = forms.ChoiceField(widget=forms.RadioSelect, choices=TRUC)
line2 = …
Maka Anda perlu menemukan tata letak template untuk merendernya dengan benar. RadioSelect
menghasilkan <ul>
dengan pilihan masing-masing menjadi <li>
. Label pilihan disertakan dalam <li>
, dan ini bukan yang Anda inginkan di sini.
Dengan floppyforms Anda dapat membuat subkelas RadioSelect
dan memberinya nama_templat khusus (lihat templat floppyforms/radio.html
) untuk menghilangkan labelnya. Anda juga dapat mengubahnya untuk merender, misalnya, sel tabel (<td>
s) alih-alih <li>
, dan membuat markup formulir Anda menghasilkan tabel dengan label di header tabel.
import floppyforms as forms
class RadioSelect(forms.RadioSelect):
template_name = 'myforms/radio.html'
Letakkan markup baris yang Anda inginkan pada templat di atas.
Lalu, di templat yang merender formulir Anda:
<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>
Maka tinggal menerapkan beberapa gaya CSS untuk mendapatkan tata letak yang Anda butuhkan :)
person
brutasse
schedule
04.01.2012