Я пытаюсь отобразить предварительно заполненную форму в модальном режиме, чтобы пользователи могли щелкнуть элемент, открывается модальное окно, отображающее форму с данными этого элемента, которые пользователи могут редактировать и сохранять.
Я могу отправить данные из вида на модал с помощью сериализатора json, но не могу найти способ отправки формы.
Когда я проверяю это, я получаю сообщение об ошибке, "Object of type FormularioTareas is not JSON serializable"
Проблема, кажется, ясна, я не могу отправить форму через ответ json. Как я могу справиться с этим?
Заранее спасибо!
Модальный вызов в шаблоне
<form name="form" action="#" id="form_tarea_{{tarea.id}}" method="POST">
{% csrf_token %}
<input name="id" id="tarea_id_submit" type="text" value="{{tarea.id}}" hidden="true"/>
<a href="" id="{{tarea.id}}" class="show_tarea" data-toggle="modal" >Este link</a>
</form>
Скрипт Ajax
Здесь я сейчас использую $('#caca').text(tarea_data.caca);
только для проверки, я могу правильно отправить некоторую информацию модалу. Это работает.
Полагаю, мне следует обновить этот "текстовый" тип на другой, чтобы он работал.
<script>
$(function(){
$('.show_tarea').on('click', function (e) {
e.preventDefault();
let tarea_id = $(this).attr('id');
$.ajax({
url:'/catalog/tareas-detail/',
type:'POST',
data: $('#form_tarea_'+tarea_id).serialize(),
success:function(response){
console.log(response);
$('.show_tarea').trigger("reset");
openModal(response);
},
error:function(){
console.log('something went wrong here');
},
});
});
});
function openModal(tarea_data){
$('#caca').text(tarea_data.caca);
$('#modal_tareas').modal('show');
};
</script>
Вид
def TareaDetailView(request):
context = {}
tareas = Tareas.objects.values()
context[tareas] = Tareas.objects.all()
if request.method == 'POST' and request.is_ajax():
ID = request.POST.get('id')
tarea = tareas.get(pk=ID) # So we send the company instance
tareas_form = FormularioTareas(tarea)
caca = ID
return JsonResponse(tareas_form, safe=False)
else:
return render(request, 'catalog/artista.html', context)