LoginSignup
0
1

More than 5 years have passed since last update.

Rendering a display field of model formset with django-tables2

Last updated at Posted at 2017-08-31

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 処理でくっつけてしまえばいいんじゃなかろうか。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1