Django - встроенное редактирование таблиц Bootstrap
У меня есть таблица данных со всеми функциями, такими как сортировка и поиск. Я хочу добавить в таблицу столбец, который можно редактировать. Я хочу сохранить комментарии зрителя.
У меня есть колонка в моем model.py. но я не знаю, как сохранить ее и сохранить ее редактируемой.
<tbody>
<tr>
{% for a in data %}
<td><a id="idclicked" href="datadescription/{{a.id}}/" title="click to see Metadata" style="color: rgb(30, 61, 199); font-weight:bold;"><u>{{ a.id }}</u></td></a>
<td>{{ a.Date }}</td>
<td>{{ a.Name }}</td>
<td>{{ a.Affliations}} </td>
<td>{{ a.Methods}}</td>
<td>{{ a.Instruments}}</td>
<td>{{ a.device}}</td>
<td>{{ a.comments }}</td>
<td contenteditable="true">{{ a.editablecomments }}</td>
Вы можете попробовать сделать кнопку "сохранить" и отправить данные в представление с помощью Ajax следующим образом:
Шаблон
<td contenteditable="true" class="edit" name="content" id="{{a.id}}">{{ a.editablecomments }}</td>
...
<button>Save</button>
...
<script>
const itemsToBeSubmitted = []; // store edited items here
$(".edit").focusout(function(){
let id = this.id;
let value = $(this).text();
itemsToBeSubmitted.push({
value: value,
id: id
});
});
// Now you have an array all edited elements
document.querySelector('button').addEventListener('click', function() {
$.ajax({
url: '/someURLfunction',
type: 'post',
data: itemsToBeSubmitted, // edited items
success: (response) => {
console.log('Saved successfully');
}
});
});
</script>
Виды
def someURLfunction(request, id):
text = request.POST['itemsToBeSubmitted']
something = SomeModel.objects.get(id=id)
something.comment = text
something.save()
return redirect('index')
Url
Что-то вроде:
path('someURLfunction/<int:id>', views.someURLfunction, name='someURLfunction')
Полезные ссылки:
Сохранить редактируемый текст таблицы (хотя это для laravel / php, принцип почти тот же)