Overview
Djangoでtables2 を使いながらformを作りたい時の方法。
完全にHiddenで良いならばこちらにHow Toが書いてあるが、
Input自体はHiddenながら、データを表示しておきたい時の方法を作ってみた。
class DisplayHiddenInputColumn(tables2.Column):
def __init__(self, *args, **kwargs):
super(DisplayHiddenInputColumn, self).__init__(*args, **kwargs)
def render(self, value):
return mark_safe(
'<input type="hidden" name="{}" value="{}" />{}'.format(
self.accessor, value, value))
tr/td の display none を消してhidden input の後に値を付けてやるだけ。
Originalだと、name が verbose_name になっているが、データの参照具合を考えるとname = accessor の方が便利だった。
formset と違うので複数のフィールドで適用すると
form1 = [ 1, 2, 3 ]
form2 = [a, b, c]
みたいに、 [1, a], [2, b], [3, c] のようになってくれないが、
dict ではないのでzip 処理でくっつけてしまえばいいんじゃなかろうか。