#python #django #python-3.x #datatables #django-rest-framework
#python #django #python-3.x #таблицы данных #django-rest-framework
Вопрос:
У меня есть сериализатор DRF:
class ActivitySerializer(serializers.ModelSerializer):
link = serializers.CharField(source='get_analytic_link', allow_null=True)
class Meta:
model = Activity
fields = ['link',]
В доступном для просмотра API ссылки доступны для просмотра. Однако, когда они передаются в DataTable через конечную точку JSON, они (предсказуемо) не доступны для просмотра. В обычном Django я бы сделал что-то вроде этого:
<td>{{ activity.get_analytic_link|urlize }}</td>
Как я могу воспроизвести это поведение в DRF, чтобы ссылки были интерактивными?
Комментарии:
1. У меня нет опыта работы с таблицами данных, но разве вы не должны просто обернуть URL в тег <a> ?
2. на каком этапе процесса это будет включено? если я добавлю это в полезную нагрузку JSON, я бы подумал, что это просто отобразится в виде строки в браузере, тегов <a> и всего остального.
3. Я думаю, вам не следует ничего менять в API, просто продолжайте отправлять URL и обрабатывайте это на стороне клиента
Ответ №1:
Похоже, это задание на интерфейсе, и вам следует использовать функцию DataTable columns.render.
Пример:
var responseObj = [
{ "information": "A1", "weblink": "http://www.microsoft.com" },
{ "information": "A2", "weblink": "http://www.yahoo.com" },
{ "information": "A3", "weblink": "http://www.google.com" },
{ "information": "A4", "weblink": "http://www.duckduckgo.com" }
];
$('#example').dataTable({
"data": responseObj,
"columns": [
{ "data": "information" },
{
"data": "weblink",
"render": function(data, type, row, meta){
if(type === 'display'){
data = '<a href="' data '">' data '</a>';
}
return data;
}
}
]
});