Django обновление данных через ajax
html
<div class="col-8 mt-5" xmlns="http://www.w3.org/1999/html">
<form class="form-inline justify-content-center" id="createTaskForm" method="post" data-url="{% url 'task_list_url' %}">
{% csrf_token %}
{% for field in form %}
<div class="mx-3">
{{field}}
</div>
{% endfor %}
<button type="button" class="btn btn-outline-success" id="createButton">Create</button>
</form>
</div>
<table class="table" id="taskList">
<thead>
<tr>
<th>ФИО ответственного</th>
<th>Объект</th>
<th>Вид работ</th>
<th>Объем работ план</th>
<th>Объем работ факт</th>
<th>Служба</th>
<th>Дата</th>
<th>ФИО исполнителя</th>
<th>Статус</th>
<th>Примечание</th>
<th>Подтверждение</th>
<th></th>
</tr>
</thead>
{% for task in tasks %}
<tbody><tr id="taskCard" data-id="{{ task.id }}">
<td>{{task.title}}</td>
<td>{{task.anons}}</td>
<td>{{task.full_text}}</td>
<td>{{task.plan}}</td>
<td>{{task.fact}}</td>
<td>{{task.slujba}}</td>
<td>{{task.data}}</td>
<td>{{task.ispolnitel}}</td>
<td>{{task.status}}</td>
<td>{{task.prim}}</td>
<td>{{task.podt}}</td>
<td><button type="button" class="update" data-id="{{ task.id }}" >Update</button></td></tr></tbody>
<td><button type="button" class="close" data-id="{{ task.id }}" >Close</button> </td></tr></tbody>
{% endfor %}
</table> </div>
views.py
Для создания
class TaskList(View):
def get(self,request):
form = PlanForm()
tasks = Plan.objects.all()
return render(request, 'task/task_list.html', context={'form':form, 'tasks':tasks})
def post(self, request):
form = PlanForm(request.POST)
if form.is_valid():
new_task = form.save()
return JsonResponse({'task': model_to_dict(new_task)}, status=200)
else:
return redirect('task_list_url')
js
$(document).ready(function(){
var csrfToken = $("input[name=csrfmiddlewaretoken]").val();
$("#createButton").click(function(){
var serializedData = $("#createTaskForm").serialize();
$.ajax({
url: $("createTaskForm").data('url'),
data: serializedData,
type: 'post',
success: function(response) {
$("#taskList").append('<tbody><tr id="taskCard" data-id="'+ response.task.id +'"><td>'+ response.task.title +'</td><td>'+ response.task.anons +'</td><td>'+ response.task.full_text +'</td><td>'+ response.task.plan +'</td><td>'+ response.task.fact +'</td><td>'+ response.task.slujba +'</td><td>'+ response.task.data +'</td><td>'+ response.task.ispolnitel +'</td><td>'+ response.task.status +'</td><td>'+ response.task.prim +'</td><td>'+ response.task.podt +'</td><td><button type="button" class="update" data-id="'+ response.task.id +'" >Update</button></td></tr></tbody><td><button type="button" class="close" data-id="'+ response.task.id +'">Close</button></td></tr></tbody>');
}
})
$("#createTaskForm")[0].reset();
});
все работает как надо, не могу сообразить как занести в форму для обновления данных
views.py
class TaskComplete(View):
# def get(self, request, id):
# task = Plan.objects.get(id=id)
# form = PlanForm(request.POST, instance=task)
# return JsonResponse({'task': model_to_dict(form)}, status=200)
def post(self, request, id):
task = Plan.objects.get(id=id)
# task.complete=True
print(task)
# task.save()
return JsonResponse({'data':{'title':task.title}})
js
$("#taskList").on('click', 'button.update', function(){
var dataId = $(this).data('id');
// $form_data = $("#createTaskForm").serialize();
$.ajax({
url: '/tasks/'+ dataId + '/completed/',
data: {
csrfmiddlewaretoken: csrfToken,
id: dataId
},
type: 'post',
dataType: 'json',
success: function(response){
$("#createTaskForm")[0].value=response['data']['title'];
}
});