모델 및 열 이름의 튜플을 취하는 일반 테이블 뷰를 만들고 모델의 지정된 열을 표시하려고합니다. 내 문제는 내부 메타 클래스입니다. django-table2 : 테이블 서브 클래스 화 및 메타 내부 클래스 속성
이 두 모델을 가정# models.py
from django.db import models
class Model_a(models.Model):
column_a_1 = models.Field()
column_a_2 = models.Field()
column_a_3 = models.Field()
column_a_4 = models.Field()
column_a_5 = models.Field()
class Model_b(models.Model):
column_b_1 = models.Field()
column_b_2 = models.Field()
column_b_3 = models.Field()
column_b_4 = models.Field()
column_b_5 = models.Field()
목적은 주어진 순서 열의 일부 적절한 테이블을 생성하는 하나의 뷰를 갖는 것이다.
# urls.py
from django.conf.urls import patterns, url
import myapp.views as myviews
import myapp.models as mymodels
urlpatterns = patterns('',
url(r'^table_a/$',
myviews.show_table,
{ 'model': mymodels.Model_a,
'columns': ("column_a_1", "column_a_2", "column_a_3") }),
url(r'^table_b/$',
myviews.show_table,
{ 'model': mymodels.Model_b,
'columns': ("column_b_5", "column_b_2") }))
그리고이 같은 간단한 views.py : 그래서, 나는이 같은 urls.py를했습니다
# views.py
from django.shortcuts import render
from django_tables2 import RequestConfig
import myapp.tables as mytables
def show_table(request, model, columns):
entries = model.objects.all()
table = mytables.ModelTable(entries, model, columns)
RequestConfig(request).configure(table)
return render(request, 'table_view.html', {'dynamic-table': table})
의 핵심은 tables.py 내부 표 서브 클래 싱에 있습니다
# tables.py
from django_tables2 import import Table
class ModelTable(Table):
class Meta:
pass
def __init__(self, data, model, columns, order_by=None, orderable=None, empty_text=None,
exclude=None, attrs=None, sequence=None, prefix=None,
order_by_field=None, page_field=None, per_page_field=None,
template=None, sortable=None, default=None):
self.Meta.model = model
self.Meta.fields = columns
self.Meta.sequence = columns
super(ModelTable, self).__init__(data, order_by, orderable, empty_text,
exclude, attrs, sequence, prefix,
order_by_field, page_field, per_page_field,
template, sortable, default)
분명히 표 하위 클래스 이니셜 라이저에서 Table.Meta의 특성을 설정하는 방법을 이해하지 못했습니다. 내 템플릿에 {% render_table dynamic-table %}
을 사용할 때 비어있는 테이블 (보이지는 않음)을 얻을 수 있지만 제대로 작동하는 페이지 매거기를 얻을 수 있습니다.
내 실수는 어디에서 왔습니까?