Trong dự án Django của tôi, tôi cần phải có các bảng có cột động và phụ thuộc vào những gì có trong cơ sở dữ liệu. Vì vậy, tôi tìm thấy một giải pháp trong here và nó hoạt động nhưng với một vấn đề nhỏ. Đây là lớp học với một bảng tôi đang mở rộng động:Django-tables2 - tự động thêm cột vào bảng - không thêm attrs vào thẻ bảng trong html
class ClientsTable(tables.Table):
class Meta:
model = Client
attrs = {"class": "paleblue", "orderable":"True", "width":"100%"}
fields = ('name',)
def __init__(self, *args, **kwargs):
super(ClientsTable, self).__init__(*args, **kwargs)
self.counter = itertools.count()
def render_row_number(self):
return '%d' % next(self.counter)
def render_id(self, value):
return '%s' % value
Và đây là phương pháp mở rộng các lớp:
def define_table(roles):
attrs = dict((r.name, tables.Column() for r in roles)
klass = type('DynamicTable', (ClientsTable,), attrs)
return klass
Khi tôi là tạo ra một bảng trong views.py như thế này:
table = define_table(roles)(queryset)
bảng này cho thấy các cột như tôi muốn, nhưng trong mã html tôi thấy rằng nó bỏ attrs:
{"class": "paleblue", "orderable":"True", "width":"100%"}
Vì vậy, không có kiểu css cho paleblue, điều quan trọng đối với tôi. Tôi cảm thấy rằng nó có thể là một cái gì đó với lớp Meta nhưng các lĩnh vực và mô hình đang làm việc, vì vậy tôi không có ý tưởng tại sao attrs không.
đẹp thứ! Không giải quyết chính xác vấn đề của tôi, nhưng tôi có thể sửa đổi đoạn mã của bạn để giải quyết vấn đề của mình và học được rất nhiều về hành động của Python 'type' và meta class. Thx một đống! – schwobaseggl
Vui vì tôi đã giúp! Tôi cũng đã viết nhiều bài đăng khác nhau để thực hiện các công cụ có loại tại blog của tôi: http://spapas.github.io/category/django.html – Serafeim