django-tables2 поставляется с некоторыми пользовательскими столбцами, вы можете посмотреть их реализацию здесь:
https://github.com/jieter/django-tables2/tree/master/django_tables2/columns
JSONColumn
может бытьхороший пример:
<code>class JSONColumn(BaseLinkColumn):
def __init__(self, json_dumps_kwargs=None, **kwargs):
self.json_dumps_kwargs = (
json_dumps_kwargs if json_dumps_kwargs is not None else {"indent": 2}
)
super(JSONColumn, self).__init__(**kwargs)
def render(self, record, value):
return format_html(
"<pre {}>{}
", AttributeDict (self.attrs.get (" pre ", {})). as_html (), json.dumps (значение, ** self.json_dumps_kwargs),)
Реализация добавляет один аргумент в конструктор столбцов, что позволяет программисту изменять передаваемые параметры на json.dumps()
. В своем методе render()
он извлекает атрибуты для тега <pre>
из attrs
-dict. Это позволяет пользователю делать
class MyTable(tables.Table):
data = tables.JSONColumn(attrs={"pre": {"class": "json-data"}})
, который будет использоваться для визуализации столбца следующим образом:
<code><pre class="json-data">{
"key": "value"
}
Также обратите внимание, что если вашсоздайте столбец, который не просматривает данные напрямую, вы можете установить empty_values=()