2016-06-10 2 views
0

Django-tables2를 사용하여 수정 된 행 순서 데이터를 저장하기 위해 양식 태그를 테이블 주위에 감싸는 테이블을 렌더링합니다. 내 양식이 수정 된 데이터를 저장할 수 있도록 양식 태그 내에서 다음과 같은 숨겨진 입력을 표로 렌더링해야합니다.ID 필드에 숨겨진 입력을 django-tables2에 추가하는 방법은 무엇입니까?

솔루션은 작동하지만 현재 입력 태그를 td 태그 안에 렌더링하여 ID 열을 표시합니다. 숨겨진 입력 태그가있는 상태에서 ID 열을 숨기는 방법은 무엇입니까?

<td class="id">20098<input type="hidden" name="track_id" value="20098" /></td> 

tables.py :

class TrackIDColumn(tables.Column): 

    def render(self, value): 
     return mark_safe(str(value) + '<input type="hidden" name="track_id" value="' + str(value) + '" />') 

class PlaylistTable(tables.Table): 

    id = TrackIDColumn() 

    class Meta: 
     model = Track 
     attrs = {"class": "paleblue"} 
     orderable = False 
     fields = ('id', 'artist', 'title',) 

템플릿 : 당신은 열을 렌더링하지 않고 열의가 someting를 렌더링 할 수

<form method='POST' action='{% url "playlists:save_playlist" username=user.get_username slug=playlist.slug %}'>{% csrf_token %} 
{% render_table table "django_tables2/bootstrap.html" %} 
<button type="submit" name="playlist_id" value="{{ playlist.id }}" class="btn btn-primary">Save</button> 
</form> 

답변

1

. 당신이 절대적으로 여분의 열을 렌더링하지 않으려면

class PlaylistTable(tables.Table): 
    id = tables.Column(verbose_name='') 

    def render_id(self, value): 
     return format_html('<input type="hidden" name="track_id" value="{}" />', str(value)) 

것은, 당신이 다른 컬럼에 숨겨진 입력 태그를 추가해야합니다 : 당신이 할 수있는 컬럼에 빈 verbose_name를 추가하여 헤더를 숨길 수 있습니다 :

class PlaylistTable(tables.Table): 
    artist = tables.Column() 
    title = tables.Column() 

    def render_title(self, value, record): 
     return format_html('{} <input type="hidden" name="track_id" value="{}" />', value, record.id)