Django возвращает значение модели, сохраненное формой в POST (Ajax), когда я вызываю запрос через GET (Ajax)
У меня есть экран с таблицей данных с данными, я обновляю значения с помощью ajax и затем перезагружаю его, но в некоторых случаях я сохраняю значение через пост-запрос, а затем, когда я делаю новый запрос для обновления экрана с помощью get, измененные значения возвращаются без какой-либо ошибки.
View
class ManualGetView(View):
# get by which I query all values to show in the datatable
def get(self, request):
items = ConfiguracaoManual.objects.all().order_by('endereco')
data = [item.to_dict_json(get_permissoes(RAIZ, request.user)) for item in items]
response = {'data': data}
return JsonResponse(response)
class ManualAltView(View):
def get(self, request, request_id):
item = ConfiguracaoManual.objects.get(pk=request_id)
data = item.get_data()
response = {'status': 200, 'data': data}
return JsonResponse(response)
# post where I update the values
def post(self, request, request_id):
if request_id:
model = ConfiguracaoManual.objects.get(pk=request_id)
form = ManualForm(request.POST, instance=model)
else:
form = ManualForm(request.POST)
if form.is_valid():
instance = form.save()
# instance.save()
if not request_id:
Auditoria(usuario=request.user, modelo=RAIZ, mensagem=SUCESSO['incluir']).save()
response = {'status': True, 'msg': SUCESSO['incluir']}
else:
Auditoria(usuario=request.user, modelo=RAIZ, mensagem=SUCESSO['incluir']).save()
response = {'status': True, 'msg': SUCESSO['incluir']}
else:
if not request_id:
Auditoria(usuario=request.user, modelo=RAIZ, mensagem=ERRO['alterar']).save()
response = {'status': False, 'msg': ERRO['alterar'], 'erros': form.errors}
else:
Auditoria(usuario=request.user, modelo=RAIZ, mensagem=ERRO['alterar']).save()
response = {'status': False, 'msg': ERRO['alterar'], 'erros': form.errors}
return JsonResponse(response)
JS Script
//Function used to update by ajax
function setItem() {
console.log('setItem()')
id = $("#set_item").attr('valor')
data = $('#form-data').serialize();
$.ajax({
type: 'POST',
url: '/' + model + '_set/' + id,
data: data,
success: function (response) {
if (response.status) {
if (response.redirect) {
window.location.href = response.redirect;
} else {
setAlertaModalForm(response.msg, false)
table.ajax.reload(null, false);
limpaErros()
if (id == 0) {
limpaForm()
}
}
} else {
setAlertaModalForm(response.msg)
erros = response.erros
Object.keys(erros).forEach(function (key) {
mensagem = ""
$("[name='" + key + "']").nextAll().remove()
Object.keys(erros[key]).forEach(function (key2) {
mensagem += '<div class="invalid-feedback" style="display: block;">' + erros[key][key2] + '</div>'
});
$("[name='" + key + "']").after(mensagem)
});
}
},
error: function (response) {
alert(response["responseJSON"]["error"]);
}
})
}
Я не нашел никакого решения